Details
-
Bug
-
Status: Closed
-
Major
-
Resolution: Fixed
-
None
-
None
Description
If a remote delegate is disabled, its listener associated with a reply queue should be terminated. This seems to be not working although there is code that supposed to stop the listener. If the listener is not terminated, Spring attempts to recover the connection and dumps excessive exceptions into the log if the remote broker is no longer available. An example stack trace is:
9/24/08 2:20:55 AM - 17: org.springframework.jms.listener.DefaultMessageListenerContainer.refreshConnectionUntilSuccessful: INFO: Could not refresh JMS Connection - retrying in 20000 ms
javax.jms.JMSException: Could not connect to broker URL: tcp://137.226.36.96:10008. Reason: java.net.SocketTimeoutException: connect timed out
at org.apache.activemq.util.JMSExceptionSupport.create(JMSExceptionSupport.java:33)
at org.apache.activemq.ActiveMQConnectionFactory.createActiveMQConnection(ActiveMQConnectionFactory.java:280)
at org.apache.activemq.ActiveMQConnectionFactory.createActiveMQConnection(ActiveMQConnectionFactory.java:214)
at org.apache.activemq.ActiveMQConnectionFactory.createConnection(ActiveMQConnectionFactory.java:161)
at org.springframework.jms.support.JmsAccessor.createConnection(JmsAccessor.java:188)
at org.springframework.jms.listener.AbstractJmsListeningContainer.createSharedConnection(AbstractJmsListeningContainer.java:209)
at org.springframework.jms.listener.AbstractJmsListeningContainer.refreshSharedConnection(AbstractJmsListeningContainer.java:197)
at org.springframework.jms.listener.DefaultMessageListenerContainer.refreshConnectionUntilSuccessful(DefaultMessageListenerContainer.java:701)
at org.springframework.jms.listener.DefaultMessageListenerContainer.recoverAfterListenerSetupFailure(DefaultMessageListenerContainer.java:683)
at org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.run(DefaultMessageListenerContainer.java:835)
at java.lang.Thread.run(Thread.java:735)
Caused by: java.net.SocketTimeoutException: connect timed out
at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:365)
at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:227)
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:214)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:378)
at java.net.Socket.connect(Socket.java:531)
at org.apache.activemq.transport.tcp.TcpTransport.connect(TcpTransport.java:335)
at org.apache.activemq.transport.tcp.TcpTransport.doStart(TcpTransport.java:303)
at org.apache.activemq.util.ServiceSupport.start(ServiceSupport.java:49)
at org.apache.activemq.transport.TransportFilter.start(TransportFilter.java:54)
at org.apache.activemq.transport.TransportFilter.start(TransportFilter.java:54)
at org.apache.activemq.transport.WireFormatNegotiator.start(WireFormatNegotiator.java:66)
at org.apache.activemq.transport.TransportFilter.start(TransportFilter.java:54)
at org.apache.activemq.transport.TransportFilter.start(TransportFilter.java:54)
at org.apache.activemq.ActiveMQConnectionFactory.createActiveMQConnection(ActiveMQConnectionFactory.java:265)
... 9 more
A delegate was disabled ok, but sometime later Spring tried to recover the connnection dumping the exceptions above.