[jboss-user] [Messaging, JMS & JBossMQ] - Frustration with basic client and broken examples.

dbs do-not-reply at jboss.com
Mon Nov 6 12:33:14 EST 2006


We have a need to implement some basic P2P JMS queues in Jboss 4.0.4-GA, and I'm trying to set up a simple example using the sample queue/A JMS queue.  The problem is the example in the JBoss wiki does not work, and trying to figure out the 'proper' way to do it is intensely frustrating.  What with SpyDestination references and the like - this seems to be a path that I shold not be taking.

The example code I tried is here:
http://wiki.jboss.org/wiki/Wiki.jsp?page=QueueExample

Here's my sample code - it's a bit verbose, but perhaps someone can figure out if I'm mixing approaches or what...


  | import javax.naming.NamingException;
  | import javax.servlet.ServletException;
  | import javax.servlet.http.HttpServlet;
  | import javax.servlet.http.HttpServletRequest;
  | import javax.servlet.http.HttpServletResponse;
  | 
  | import java.util.Properties;
  | 
  | import javax.annotation.Resource;
  | import javax.jms.Message;
  | import javax.jms.Queue;
  | import javax.jms.QueueConnection;
  | import javax.jms.QueueConnectionFactory;
  | import javax.jms.QueueReceiver;
  | import javax.jms.QueueSender;
  | import javax.jms.QueueSession;
  | import javax.jms.Session;
  | import javax.jms.TextMessage;
  | import javax.naming.Context;
  | import javax.naming.InitialContext;
  | import javax.naming.Reference;
  | import org.jboss.mq.SpyQueue;
  | 
  | 
  | public class Test extends HttpServlet {
  | 
  | 	static Logger logger = Logger.getLogger(Test.class);
  | 
  | 	InitialContext initialContext;
  | 	@Resource(mappedName="queue/A") Queue queue;
  | 
  |        // snip snip
  | 	QueueConnection qc;
  | 			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 connection factory");
  | 			QueueConnectionFactory qcf = (QueueConnectionFactory) ctx.lookup("UIL2ConnectionFactory");
  | 
  | 			log.info("Creating connection");
  | 			qc = qcf.createQueueConnection();
  | 			log.info("Creating session");
  | 			QueueSession qs = qc.createQueueSession(false, javax.jms.Session.AUTO_ACKNOWLEDGE);
  | 
  | 			log.info("Creating sender");
  | 			QueueSender sender = qs.createSender (queue);
  | 
  | 			log.info("Creating message");
  | 			TextMessage message = qs.createTextMessage("hello");
  | 
  | 
  | 			log.info("Sending message");
  | 			// This is the error - 
  | 			//11:49:13,031 INFO  [STDOUT] Sending message
  | 			//11:49:13,031 ERROR [STDERR] java.lang.UnsupportedOperationException: Not constructed with identifyed destination. Usage of method not allowed
  | 			//11:49:13,031 ERROR [STDERR] 	at org.jboss.mq.SpyMessageProducer.send(SpyMessageProducer.java:204)
  | 			//11:49:13,031 ERROR [STDERR] 	at com.areteinc.servlets.Test.doGet(Test.java:72)
  | 
  | 			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);
  | // snip snip
  | 

If I put in a destination type of 'queue' in the sender() call, it tells me this is not a SpyDestination, and we go off spinning in 'spy' land. 

Not having a simple, clear example of using JBossMQ, or a clear example of using JBoss Messaging is very frurstating.  Help please!  We're dead in the water right now.

View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=3983504#3983504

Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=3983504



More information about the jboss-user mailing list