summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobert Gemmell <robbie@apache.org>2014-08-05 13:35:12 +0000
committerRobert Gemmell <robbie@apache.org>2014-08-05 13:35:12 +0000
commit81e41c8a360e6b92c5b29ec7061d8447ded75945 (patch)
tree1204f40db65cbcea571a933c112f6d2d2d3a322c
parentf1de9935453ef75423efe9f04a7d7a2ca8e41837 (diff)
downloadqpid-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.txt6
-rw-r--r--qpid/java/amqp-1-0-client-jms/example/pom.xml60
-rw-r--r--qpid/java/amqp-1-0-client-jms/example/src/main/java/org/apache/qpid/amqp_1_0/jms/example/Hello.java136
-rw-r--r--qpid/java/pom.xml1
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>