1 Reply Latest reply on Feb 18, 2006 7:56 AM by Adrian Brock

    Errror while running Test Client for JBoss MQ

    harishhv Newbie

      I am trying to run the following client code for JBOSS MQ.

      package test;

      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.QueueSender;
      import javax.jms.QueueSession;
      import javax.jms.Session;
      import javax.jms.TextMessage;
      import javax.naming.Context;
      import javax.naming.InitialContext;


      /**
      * @author harishh
      *
      * TODO To change the template for this generated type comment go to
      * Window - Preferences - Java - Code Style - Code Templates
      */
      public class JMSClient {

      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");
      Queue queue = (Queue) ctx.lookup("queue/testQueue");

      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");
      QueueSender sender = qs.createSender(queue);

      log.info("Creating message");
      TextMessage message = qs.createTextMessage("hello");

      log.info("Sending message");
      sender.send(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("Maybe you forget to clear the queue before running this test?");

      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();
      }
      }
      }

      I get a class cast exception at the line

      Queue queue = (Queue) ctx.lookup("queue/testQueue");

      My Questions.

      1. Where do I set up the queue/testQueue.
      2. What configuration is required to run the JBOSSMQ client?Does it require
      JNDI configuration or any other configuration?