I have for several days been trying to get this scenaio to work... MDB 1 receives a message MDB 1 sends a message and waits for a reply
MDB 2 receives the message, determines the response MDB 2 replies on the reply to queue specified. The message is posted on the queue that same second (I checked the WSMQ Explorer to confirm the exact time) MDB 1 times out several seconds later (timeout period) This is shown below with JBoss DEBUG logging enabled. If I run the exact same code as a simple Java application to obtain the reply MDB 1 is expecting then it works fine... What could possibly be wrong? Can anyone suggest anything? 22:49:33,296 DEBUG [BaseMDB] Reply ID: (ID:414d5120484254657374514d332020200089054820024402) <?xml version="1.0" encoding="UTF-8"?><HB_EAI_REPLY><HB_EAI_HEADER version="1.0" created="2008-04-16T22:49:33" r eturnCode="3001"/></HB_EAI_REPLY> 22:49:33,296 DEBUG [RepositoryClassLoader] setRepository, repository=org.jboss.mx.loading.HeirarchicalLoaderRepository3@ 18c28a, [EMAIL PROTECTED] url=null ,addedOrder=0} 22:49:33,296 INFO [STDOUT] >>>>>>>>>>>>>>>>>>>> the message has been placed on queue:///BANK_REPLY.QL 22:49:33,296 INFO [STDOUT] DONE ON MEssage>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 22:49:33,296 DEBUG [ManagedEntityManagerFactory] ************** closing entity managersession ************** 22:49:37,218 INFO [STDOUT] Where is my message? It should have been onqueue:///BANK_REPLY.QL 22:49:37,218 WARN [XmlHelper] Service: CustomerRetrievalReply timeout occurred for service: CustomerRetrieval. JMS ID: ID:414d5120484254657374514d332020200089054820024402 22:49:37,218 INFO [IvrAccountHandler] [0002] Missing account for userID: 1 22:49:37,218 INFO [STDOUT] ***********class ae.hilal.j2ee.mdb.ProductionMDB-3686138 connection: 12455934 Here is the test code that works... package ae.hilal.eai.spi; import java.util.Properties; import javax.jms.JMSException; import javax.jms.QueueConnection; import javax.jms.QueueReceiver; import javax.jms.QueueSession; import javax.jms.TextMessage; import org.apache.log4j.Logger; import com.ibm.mq.jms.JMSC; import com.ibm.mq.jms.MQQueue; import com.ibm.mq.jms.MQQueueConnectionFactory; public class TestMQ { private static final long serialVersionUID = -7743081529785780978L; private static final Logger log = Logger.getLogger(TestMQ.class); private TestMQ() { } public static void main(String[] args) throws JMSException { System.out.println("What is it? " + JMSC.MQJMS_EXP_UNLIMITED); System.out.println("What is it? " + JMSC.MQJMS_EXP_APP); MQQueueConnectionFactory qcf =new MQQueueConnectionFactory(); Properties props = new Properties(); props.put("ConnectionFactory.ConnectionMode", "Client"); props.put("ConnectionFactory.Client.HostName", "localhost"); props.put("ConnectionFactory.Client.QueueManagerName", "HBTestQM3"); props.put("ConnectionFactory.Client.Channel", "HILALBANKCLIENTCONN"); props.put("ConnectionFactory.Client.Port", "1513"); String connectionMode = props .getProperty("ConnectionFactory.ConnectionMode"); if ("Bind".equals(connectionMode)) { log.info("Using Bind mode for MQ connection."); qcf.setTransportType(JMSC.MQJMS_TP_BINDINGS_MQ); } else { String hostname = props .getProperty("ConnectionFactory.Client.HostName"); String queueManagerName = props .getProperty("ConnectionFactory.Client.QueueManagerName"); String channel = props .getProperty("ConnectionFactory.Client.Channel"); String port = props .getProperty("ConnectionFactory.Client.Port"); Integer portNo = null; if (port != null) try { portNo = Integer.parseInt(port); } catch (NumberFormatException ex) { System.out.println("Invalid port number: " + port); } System.out.println("Using Client mode for MQ connection. host: " + hostname + " QMName: " + queueManagerName + " Channel: " + channel + " Port: " + port); qcf.setTransportType(JMSC.MQJMS_TP_CLIENT_MQ_TCPIP); // qcf.setQueueManager(queueManagerName); qcf.setHostName(hostname); // qcf.setChannel(channel); if (portNo != null) qcf.setPort(portNo); } try { QueueConnection connection = qcf.createQueueConnection(); connection.start(); QueueSession s = connection.createQueueSession(false, QueueSession.AUTO_ACKNOWLEDGE); QueueReceiver receiver = s.createReceiver(new MQQueue("BANK_REPLY.QL")); System.out.println(":Reading off " + receiver.getQueue()); TextMessage msg = (TextMessage) receiver.receive(3); System.out.println(msg.getText()); } catch (JMSException e) { e.getLinkedException().printStackTrace(); // e.printStackTrace(); throw e; } } } View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4144615#4144615 Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4144615 _______________________________________________ jboss-user mailing list jboss-user@lists.jboss.org https://lists.jboss.org/mailman/listinfo/jboss-user