yong deng [
http://community.jboss.org/people/dengyong] created the discussion
"why JMS server connection can not recover when the socket, which JMS server uses to
delivery messages to client, is broken"
To view the discussion, visit:
http://community.jboss.org/message/544953#544953
--------------------------------------------------------------
My environment:
JBoss messaging 1.4.0.SP3-CP05 + JBoss remoting 2.2.2.SP10
My case is like below:
I have a JMS client which will subscribe messages from a JMS topic. On the JMS
connection, I set an ExceptionListener so that I can detect the connection broken.
I did following testing and found some situation JMS connection exception listener can
not dectect connection broken.
By default, JMS bisocket will listen on port 4457. For every JMS connection, I can find
two TCP connection connecting to the port 4457. Besides that, I can find the other two TCP
connection which I guess server will use to delivery messages to the clients.
1. when I [only] close TCP connection connecting to the port 4457 use some tools,
indeed the ExceptionListener can detect the broken connection
2. but when I [only] close the other two TCP connection, I find:
1) JMS server will log an exception on ServerInvokerCallbackHandler. After that, it
seems will never recover to delivery messages to the clients agains.
On the same handle, the session will still be live in server side, I find this from
MBean [jboss.messaging:service=ServerPeer showActiveClientsAsHTML] from JMX console.
2) JMS client then can never get message from server side again and also the JMS
ExceptionListener on connection can never detect connection failure
Now my questions here is:
1. for my case 2, should not the JMS server try to recovery from broken sockets to
delivery messages to the JMS client again?
2. for my case 2, if expected behavior can not be implemented, at least JMS connection
ExceptionListener should be able to detect failure and reconnect?
--------------------------------------------------------------
Reply to this message by going to Community
[
http://community.jboss.org/message/544953#544953]
Start a new discussion in JBoss Messaging Development at Community
[
http://community.jboss.org/choose-container!input.jspa?contentType=1&...]