[jboss-user] [Messaging, JMS & JBossMQ] - IllegalStateException (The connection is closed) after heavy

harrismic do-not-reply at jboss.com
Wed Jan 3 12:27:58 EST 2007


We are using JBossMQ  with JBoss version 4.0.2 and 4.0.4  

We have a configuration with a JMS client connected to JMS queues.  There are two JMS queues a request queue and response queue.   The web app running under JBoss can submit requests for statistical analysis to the request queue. The JMS client listens to the request queue processes the request and puts the result on the result queue.   The web app listens to the result queue picks up the results and displays them. 

Everything works fine until we do heavy stress testing.  Note that we are using  DeliveryMode.NON_PERSISTENT . After many successful messages have been sent and processed, we get the exception:


"javax.jms.IllegalStateException: The connection is closed"  when trying to send back the result via JMS.

The code to send the results back is:

try {
	
        // Is there a way to test the  queueConnection here so that 
        // I can reestablish the connection if it is broken or closed ??

			
	QueueSession resultSession = 
                                       queueConnection.createQueueSession(false,
					         QueueSession.AUTO_ACKNOWLEDGE);
		
	ObjectMessage msg = resultSession.createObjectMessage(result);
			
	Queue resultQueue = (Queue) resultDestination;
		
	QueueSender resultSender =  
                                          resultSession.createSender(resultQueue);
		
	resultSender.send(msg, DeliveryMode.NON_PERSISTENT,
					Message.DEFAULT_PRIORITY,  
                                        Message.DEFAULT_TIME_TO_LIVE);
			
	resultSender.close();
	resultSession.close();
} catch (JMSException ex) {
	logger.error("Caught JMS exception when trying to send result.");
	logger.error(ex);
} catch (Exception ex) {
        logger.error("Caught exception when trying to send result.");
	logger.error(ex);
}   

Two questions:

a) Is this a bug in the JBossMQ?  We are not getting a JMS onException() call for the borken/closed connection like you would for ping timeout. 

b)  Is there a way to test the status of the connection (i.e. someting like a method  connection.isClosed() )  to see if it is broken  or closed so that the connection can be reestablished?

Thanks.. 





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

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



More information about the jboss-user mailing list