diff options
author | Robert Gemmell <robbie@apache.org> | 2014-08-05 13:35:12 +0000 |
---|---|---|
committer | Robert Gemmell <robbie@apache.org> | 2014-08-05 13:35:12 +0000 |
commit | 81e41c8a360e6b92c5b29ec7061d8447ded75945 (patch) | |
tree | 1204f40db65cbcea571a933c112f6d2d2d3a322c | |
parent | f1de9935453ef75423efe9f04a7d7a2ca8e41837 (diff) | |
download | qpid-python-81e41c8a360e6b92c5b29ec7061d8447ded75945.tar.gz |
QPID-5048: add pom to build the AMQP 1.0 JMS client examples, simplify example and make it exit promptly
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1615929 13f79535-47bb-0310-9956-ffa450edef68
-rw-r--r-- | qpid/java/README.txt | 6 | ||||
-rw-r--r-- | qpid/java/amqp-1-0-client-jms/example/pom.xml | 60 | ||||
-rw-r--r-- | qpid/java/amqp-1-0-client-jms/example/src/main/java/org/apache/qpid/amqp_1_0/jms/example/Hello.java | 136 | ||||
-rw-r--r-- | qpid/java/pom.xml | 1 |
4 files changed, 103 insertions, 100 deletions
diff --git a/qpid/java/README.txt b/qpid/java/README.txt index b3c65abec9..439f70c040 100644 --- a/qpid/java/README.txt +++ b/qpid/java/README.txt @@ -25,10 +25,12 @@ https://cwiki.apache.org/confluence/display/qpid/Qpid+Java+Build+How+To ==== Running client examples ===== -Use maven to copy the dependencies for the examples: +Use maven to build the modules, and additionally copy the dependencies alongside their output: mvn clean package dependency:copy-dependencies -DskipTests -Now you can run the examples as follows: +Now you can then run the examples as follows: java -cp "client/example/target/classes/:client/example/target/dependency/*" org.apache.qpid.example.Drain + + java -cp "amqp-1-0-client-jms/example/target/classes/:amqp-1-0-client-jms/example/target/dependency/*" org.apache.qpid.amqp_1_0.jms.example.Hello diff --git a/qpid/java/amqp-1-0-client-jms/example/pom.xml b/qpid/java/amqp-1-0-client-jms/example/pom.xml new file mode 100644 index 0000000000..26d51f5ceb --- /dev/null +++ b/qpid/java/amqp-1-0-client-jms/example/pom.xml @@ -0,0 +1,60 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + Licensed to the Apache Software Foundation (ASF) under one or more + contributor license agreements. See the NOTICE file distributed with + this work for additional information regarding copyright ownership. + The ASF licenses this file to You under the Apache License, Version 2.0 + (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> + <modelVersion>4.0.0</modelVersion> + + <parent> + <groupId>org.apache.qpid</groupId> + <artifactId>qpid-java-build</artifactId> + <version>0.30-SNAPSHOT</version> + <relativePath>../../pom.xml</relativePath> + </parent> + + <artifactId>qpid-amqp-1-0-client-jms-examples</artifactId> + <name>Qpid AMQP 1.0 JMS Client Examples</name> + <description>JMS client examples.</description> + + <dependencies> + <dependency> + <groupId>org.apache.qpid</groupId> + <artifactId>qpid-amqp-1-0-client-jms</artifactId> + <version>${project.version}</version> + </dependency> + + <dependency> + <groupId>org.apache.geronimo.specs</groupId> + <artifactId>geronimo-jms_1.1_spec</artifactId> + <version>${geronimo-jms-1-1-version}</version> + </dependency> + </dependencies> + + <build> + <resources> + <resource> + <directory>src/main/resources</directory> + </resource> + <resource> + <directory>src/main/java</directory> + <excludes> + <exclude>**/*.java</exclude> + </excludes> + </resource> + </resources> + </build> + +</project> diff --git a/qpid/java/amqp-1-0-client-jms/example/src/main/java/org/apache/qpid/amqp_1_0/jms/example/Hello.java b/qpid/java/amqp-1-0-client-jms/example/src/main/java/org/apache/qpid/amqp_1_0/jms/example/Hello.java index 500be792ba..b94c672133 100644 --- a/qpid/java/amqp-1-0-client-jms/example/src/main/java/org/apache/qpid/amqp_1_0/jms/example/Hello.java +++ b/qpid/java/amqp-1-0-client-jms/example/src/main/java/org/apache/qpid/amqp_1_0/jms/example/Hello.java @@ -18,38 +18,48 @@ * under the License. * */ - package org.apache.qpid.amqp_1_0.jms.example; -import javax.jms.*; +import java.util.Properties; +import java.util.concurrent.CountDownLatch; +import java.util.concurrent.TimeUnit; + +import javax.jms.Connection; +import javax.jms.ConnectionFactory; +import javax.jms.JMSException; +import javax.jms.Message; +import javax.jms.MessageConsumer; +import javax.jms.MessageListener; +import javax.jms.MessageProducer; +import javax.jms.Queue; +import javax.jms.Session; +import javax.jms.TextMessage; import javax.naming.Context; import javax.naming.InitialContext; -import java.util.ArrayList; -import java.util.Collections; -import java.util.Enumeration; -import java.util.Hashtable; -import java.util.Map; -import java.util.Properties; - public class Hello { - public Hello() { } public static void main(String[] args) { + Hello hello = new Hello(); + hello.runExample(); + } + + private void runExample() + { try { - Class.forName("org.apache.qpid.amqp_1_0.jms.jndi.PropertiesFileInitialContextFactory"); - - Hashtable env = new Hashtable(); - env.put("java.naming.provider.url", "hello.properties"); - env.put("java.naming.factory.initial", "org.apache.qpid.amqp_1_0.jms.jndi.PropertiesFileInitialContextFactory"); - - Context context = new InitialContext(env); + // Read the hello.properties JNDI properties file and use contents to create the InitialContext. + Properties properties = new Properties(); + properties.load(getClass().getResourceAsStream("hello.properties")); + Context context = new InitialContext(properties); + // Alternatively, JNDI information can be supplied by setting the "java.naming.factory.initial" + // system property to value "org.apache.qpid.amqp_1_0.jms.jndi.PropertiesFileInitialContextFactory" + // and setting the "java.naming.provider.url" system property as a URL to a properties file. ConnectionFactory connectionFactory = (ConnectionFactory) context.lookup("localhost"); Connection connection = connectionFactory.createConnection(); @@ -57,116 +67,46 @@ public class Hello Session producersession = connection.createSession(false, Session.AUTO_ACKNOWLEDGE); Queue queue = (Queue) context.lookup("queue"); - Session consumerSession = connection.createSession(false, Session.AUTO_ACKNOWLEDGE); - MessageConsumer messageConsumer = consumerSession.createConsumer(queue, "hello='true'"); + MessageConsumer messageConsumer = consumerSession.createConsumer(queue); + final CountDownLatch latch = new CountDownLatch(1); messageConsumer.setMessageListener(new MessageListener() { public void onMessage(final Message message) { try { - if(message instanceof TextMessage) { - System.out.println("Received text Message:"); - System.out.println("======================"); System.out.println(((TextMessage) message).getText()); } - else if(message instanceof MapMessage) - { - System.out.println("Received Map Message:"); - System.out.println("====================="); - - - MapMessage mapmessage = (MapMessage) message; - - Enumeration names = mapmessage.getMapNames(); - - while(names.hasMoreElements()) - { - String name = (String) names.nextElement(); - System.out.println(name + " -> " + mapmessage.getObject(name)); - } - - } - else if(message instanceof BytesMessage) - { - System.out.println("Received Bytes Message:"); - System.out.println("======================="); - System.out.println(((BytesMessage) message).readUTF()); - } - else if(message instanceof StreamMessage) - { - System.out.println("Received Stream Message:"); - System.out.println("========================"); - StreamMessage streamMessage = (StreamMessage)message; - Object o = streamMessage.readObject(); - System.out.println(o.getClass().getName() + ": " + o); - o = streamMessage.readObject(); - System.out.println(o.getClass().getName() + ": " + o); - o = streamMessage.readObject(); - System.out.println(o.getClass().getName() + ": " + o); - - } - else if(message instanceof ObjectMessage) - { - System.out.println("Received Object Message:"); - System.out.println("========================"); - ObjectMessage objectMessage = (ObjectMessage)message; - Object o = objectMessage.getObject(); - System.out.println(o.getClass().getName() + ": " + o); - } else { - System.out.println("Received Message " + message.getClass().getName()); + System.out.println("Received enexpected message type: " + message.getClass().getName()); } + + latch.countDown(); } catch (JMSException e) { System.out.println("Caught exception in onMessage(): " + e.getMessage()); - e.printStackTrace(); //TODO } - } }); connection.start(); - MessageProducer messageProducer = producersession.createProducer(queue); TextMessage message = producersession.createTextMessage("Hello world!"); - message.setJMSType("Hello"); - message.setStringProperty("hello","true"); - messageProducer.send(message); - /* - MapMessage mapmessage = producersession.createMapMessage(); - mapmessage.setBoolean("mybool", true); - mapmessage.setString("mystring", "hello"); - mapmessage.setLong("mylong", -25L); - - - messageProducer.send(mapmessage); - - BytesMessage bytesMessage = producersession.createBytesMessage(); - bytesMessage.writeUTF("This is a bytes message"); - messageProducer.send(bytesMessage); - - ObjectMessage objectMessage = producersession.createObjectMessage(); - objectMessage.setObject(new Double("3.14159265358979323846264338327950288")); - - messageProducer.send(objectMessage); + messageProducer.send(message); -/* StreamMessage streamMessage = producersession.createStreamMessage(); - streamMessage.writeBoolean(true); - streamMessage.writeLong(18031974L); - streamMessage.writeString("this is a stream Message"); - streamMessage.writeChar('\u00A3'); // POUND SIGN character - messageProducer.send(streamMessage); -*/ - Thread.sleep(50000L); + int delay = 5; + if(!latch.await(delay, TimeUnit.SECONDS)) + { + System.out.println("Waited " + delay + "sec but no message recieved."); + } connection.close(); context.close(); diff --git a/qpid/java/pom.xml b/qpid/java/pom.xml index 7ce629dc15..1be2ce0f95 100644 --- a/qpid/java/pom.xml +++ b/qpid/java/pom.xml @@ -77,6 +77,7 @@ <module>amqp-1-0-common</module> <module>amqp-1-0-client</module> <module>amqp-1-0-client-jms</module> + <module>amqp-1-0-client-jms/example</module> <module>amqp-1-0-client-websocket</module> <module>broker-codegen</module> <module>broker-core</module> |