[jboss-user] [Messaging, JMS & JBossMQ] - MDB sending a message

hasc do-not-reply at jboss.com
Mon Apr 9 10:43:44 EDT 2007


hi i have a maybe newbie question.

i was trying to make a synchronous jms call. the class MessageProducer sends a request and to a MDB wich in return sends a message back to a temporary queue.

everything seems to work untill the message should be recievedform the temporary queue. 

@Name("helloworld")
  | public class MessageProducer {
  | 
  | 	QueueConnection qConnection = null;
  | 	QueueSession qSession = null;
  | 	QueueSender qSender = null;
  | 	QueueRequestor qRequestor = null;
  | 	
  | 	@Logger Log log;
  | 		
  | 	public void test(){
  | 		try{
  | 
  | 			InitialContext iniCtx = new InitialContext();
  | 	    	Object tmp = iniCtx.lookup("ConnectionFactory");
  | 	    	QueueConnectionFactory qcFactory = (QueueConnectionFactory) tmp;
  | 	    	
  | 	    	qConnection = qcFactory.createQueueConnection();
  | 	    	Queue queue = (Queue) iniCtx.lookup("queue/quickstart_helloworld_Request");
  | 			
  | 			qConnection = qcFactory.createQueueConnection();
  | 			
  | 			qSession = qConnection.createQueueSession(false,
  | 		            Session.AUTO_ACKNOWLEDGE);
  | 
  | 			qSender = qSession.createSender(queue);
  | 
  | 			String msg = "Hello Queue!";
  | 			Message message = qSession.createTextMessage(msg);
  | 
  | 			log.info("Request message");
  | 			
  | 			TemporaryQueue tempQueue = qSession.createTemporaryQueue();
  | 			message.setJMSReplyTo(tempQueue);
  | 			qSender.send(message);
  | 			QueueReceiver receiver = qSession.createReceiver(tempQueue);
  | 			log.info("Receiver listens on: #0",receiver.getQueue().getQueueName());
  | 			
  | 			Message answer = receiver.receive();
  | 			log.info("message recieved:");			
  | 			
  | 			//qRequestor = new QueueRequestor(qSession,queue);
  | 			
  | 			//TextMessage answer = (TextMessage) qRequestor.request(message);
  | 			//log.info("answer::#0",answer.getText());			
  | 		}
  | 		catch (Exception e) {
  | 			...
  | 		}
  | 	}
  | }

and the mdb:


  | ...
  | try {
  |     	  TextMessage response = qSession.createTextMessage("Hello TempQueue!");
  |     	  System.out.println("try to get JMPReplyTo");
  |     	  Queue replyQueue = (Queue) recvMsg.getJMSReplyTo();
  |     	  System.out.println("replyQueue:" + replyQueue.getQueueName());
  |     	  QueueSender replySender = qSession.createSender(replyQueue);
  |     	  System.out.println("send response");
  |     	  replySender.send(replyQueue,response);
  |     	  replySender.close();
  |       }
  |       catch(Exception e){
  |     	  e.printStackTrace();
  |       }[
  | ...

after executing test() nothing happens, the console JBoss AS console says:

16:31:05,328 INFO  [MessageProducer] Request message
  | 16:31:05,328 INFO  [MessageProducer] Receiver listens on: JMS_TQ8
  | 16:31:05,375 INFO  [STDOUT] Received Message: Hello Queue!
  | 16:31:05,375 INFO  [STDOUT] try to get JMPReplyTo
  | 16:31:05,375 INFO  [STDOUT] replyQueue:JMS_TQ8
  | 16:31:05,375 INFO  [STDOUT] send response

and in the log file i get a few SocketManager exceptions which are not displayed in the console

is it possible what i am trying to do? can someone tell me why this doesnt work?  help would be appreciated. 

thanks,
hasc

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

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



More information about the jboss-user mailing list