[jboss-user] [Messaging, JMS & JBossMQ] - Re: Frustration with basic client and broken examples.
dbs
do-not-reply at jboss.com
Mon Nov 6 16:32:14 EST 2006
I have gotten the example to successfully run, but I'm not 100% -why- it runs now and didn't before. Here's the updated code, hopefully someone can validate whether this should be put into the wiki or not:
Do we really need the direct references to the Spy* classes?
| package com.areteinc.queue;
|
|
| import java.util.Properties;
|
| import javax.jms.Message;
| import javax.jms.Queue;
| import javax.jms.QueueConnection;
| import javax.jms.QueueConnectionFactory;
| import javax.jms.QueueReceiver;
| import javax.jms.QueueSession;
| import javax.jms.Session;
| import javax.jms.TextMessage;
| import javax.naming.Context;
| import javax.naming.InitialContext;
| import org.jboss.mq.SpyQueueSender;
|
| public class QueueExample
| {
|
| // @Resource(mappedName="queue/A")
| // static SpyDestination queue;
| public static void main(String[] args) throws Exception
| {
| log.info("Creating jndi context - alternatively use a jndi.properties");
| Properties properties = new Properties();
| properties.put(Context.INITIAL_CONTEXT_FACTORY, "org.jnp.interfaces.NamingContextFactory");
| properties.put(Context.URL_PKG_PREFIXES, "org.jnp.interfaces");
| properties.put(Context.PROVIDER_URL, "localhost");
|
| InitialContext ctx = new InitialContext(properties);
|
| log.info("Looking up queue");
|
| Context remoteCtx = new InitialContext(properties);
| Queue queue = (Queue)remoteCtx.lookup("queue/A");
|
| log.info("Looking up connection factory");
| QueueConnectionFactory qcf = (QueueConnectionFactory) ctx.lookup("UIL2ConnectionFactory");
|
| log.info("Creating connection");
| QueueConnection qc = qcf.createQueueConnection();
| try
| {
| log.info("Creating session");
| QueueSession qs = qc.createQueueSession(false, Session.AUTO_ACKNOWLEDGE);
|
| log.info("Creating sender");
| SpyQueueSender sender = (SpyQueueSender)qs.createSender(queue);
|
| log.info("Creating message");
| TextMessage message = qs.createTextMessage("hello");
|
| log.info("Sending message");
| sender.send(queue,message);
|
| log.info("Creating receiver");
| QueueReceiver receiver = qs.createReceiver(queue);
|
| log.info("Try to receive message, it will not work");
| Message received = receiver.receiveNoWait();
| if (received != null)
| throw new RuntimeException("Should not get a message if the connection is not started!");
|
| log.info("You have to start the connection before receiving messages");
| qc.start();
|
| log.info("This receive will work");
| received = receiver.receiveNoWait();
|
| log.info("Got message: " + received);
| }
| finally
| {
| qc.close();
| }
| }
|
| public static class log
| {
| public static void info(String message)
| {
| System.out.println(message);
| }
| public static void error(String message, Throwable t)
| {
| System.err.println(message);
| t.printStackTrace();
| }
| }
| }
View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=3983568#3983568
Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=3983568
More information about the jboss-user
mailing list