it's not a question of exception throwing... I mean the only way to treat properly Connection objects exception is in the ExceptionListener and you can throw your exception only in ExceptionListener. It's just a question of trace in fact. Without ExceptionListener you have the impression that ActiveMQ JMS listener doesn't detect the connection failure - and it fact it does well ! - and this is the reasons of this post.
I think if there is no ExceptionListener set for a Connection object you should print exception - and particularly this one - from Connection object. I think this is not an heavy modification and I'm sure it will avoid many misunderstanding about ActiveMQ client behavior... ++ rajdavies wrote: > > Where are you suggesting an exception is thrown with no > ExceptionListener ? > On 19 Mar 2009, at 10:02, mffrench wrote: > >> >> With ExceptionListener it's working well ! :) Anyway I think you >> should get >> this exception without any ExceptionListener ! >> >> javax.jms.JMSException: java.io.EOFException >> at >> org >> .apache >> .activemq.util.JMSExceptionSupport.create(JMSExceptionSupport.java:49) >> at >> org >> .apache >> .activemq >> .ActiveMQConnection.onAsyncException(ActiveMQConnection.java:1773) >> at >> org >> .apache >> .activemq.ActiveMQConnection.onException(ActiveMQConnection.java:1790) >> at >> org >> .apache >> .activemq.transport.TransportFilter.onException(TransportFilter.java: >> 99) >> at >> org >> .apache >> .activemq >> .transport.ResponseCorrelator.onException(ResponseCorrelator.java:114) >> at >> org >> .apache >> .activemq.transport.TransportFilter.onException(TransportFilter.java: >> 99) >> at >> org >> .apache >> .activemq.transport.TransportFilter.onException(TransportFilter.java: >> 99) >> at >> org >> .apache >> .activemq >> .transport >> .WireFormatNegotiator.onException(WireFormatNegotiator.java:152) >> at >> org >> .apache >> .activemq >> .transport.InactivityMonitor.onException(InactivityMonitor.java:244) >> at >> org >> .apache >> .activemq >> .transport.TransportSupport.onException(TransportSupport.java:96) >> at >> org.apache.activemq.transport.tcp.TcpTransport.run(TcpTransport.java: >> 189) >> at java.lang.Thread.run(Thread.java:619) >> Caused by: java.io.EOFException >> at java.io.DataInputStream.readInt(DataInputStream.java:375) >> at >> org >> .apache >> .activemq.openwire.OpenWireFormat.unmarshal(OpenWireFormat.java:269) >> at >> org >> .apache >> .activemq.transport.tcp.TcpTransport.readCommand(TcpTransport.java: >> 210) >> at >> org >> .apache.activemq.transport.tcp.TcpTransport.doRun(TcpTransport.java: >> 202) >> at >> org.apache.activemq.transport.tcp.TcpTransport.run(TcpTransport.java: >> 185) >> ... 1 more >> >> Thanks for all... >> >> >> mffrench wrote: >>> >>> Well I'm not agree with you. As specified by the JMS specification >>> the >>> Connection object supports an optional ExceptionListener. >>> ExceptionListener are the best way to treat the disconnection >>> exception or >>> other exception BUT without ExceptionListener you should get a >>> disconnection exception in the JMS listener anyway. For me the fact >>> JMS >>> listener do not receive any disconnection exception without an >>> ExceptionListener seems to be a bug from activemq... I'll implement >>> the >>> ExceptionListener to check the behavior of ActiveMQ and I keep you in >>> touch. >>> >>> Thanks for all. >>> >>> ++ >>> >>> >>> Gary Tully wrote: >>>> >>>> ah ok, I think you need an exception listener: >>>> see: >>>> http://java.sun.com/products/jms/javadoc-102a/javax/jms/Connection.html#setExceptionListener(javax.jms.ExceptionListener) >>>> >>>> On logging" see the activemq FAQ entry on >>>> logging<http://activemq.apache.org/how-can-i-enable-detailed-logging.html >>>> > >>>> >>>> 2009/3/18 mffrench <mffre...@axway.com> >>>> >>>>> >>>>> yes my client is connected... and it only receive message (it's a >>>>> jms >>>>> listener). >>>>> can you tell me what options I must set to enable the log level >>>>> in the >>>>> activemq client ? >>>>> >>>>> Some netstat >>>>> >>>>> Before killing : >>>>> >>>>> tcp6 0 0 *:61611 *:* >>>>> LISTEN >>>>> 18673/java >>>>> tcp6 0 0 localhost:35073 localhost:61611 >>>>> ESTABLISHED18727/java >>>>> tcp6 0 0 localhost:61611 localhost:35073 >>>>> ESTABLISHED18673/java >>>>> >>>>> After killing : >>>>> >>>>> tcp6 0 0 localhost:61611 localhost:35073 >>>>> TIME_WAIT - >>>>> >>>>> The listener is alway running and no exception is raised... >>>>> >>>>> >>>>> Gary Tully wrote: >>>>>> >>>>>> Is your client really connected? Has it sent or received a >>>>>> message. >>>>> With >>>>>> activemq, the connection is created on demand on first but not >>>>>> when >>>>> the >>>>>> connection factory is created. >>>>>> Can you enable debug logging and see what additional information >>>>>> you >>>>> can >>>>>> gather? >>>>>> >>>>>> 2009/3/18 mffrench <mffre...@axway.com> >>>>>> >>>>>>> >>>>>>> Here's my JNDI configuration : >>>>>>> >>>>>>> java.naming.factory.initial = >>>>>>> org.apache.activemq.jndi.ActiveMQInitialContextFactory >>>>>>> java.naming.provider.url = tcp://127.0.0.1:61611 >>>>>>> connectionFactoryNames = MICHEL >>>>>>> queue.TEST = TEST >>>>>>> >>>>>>> As you can see I provide a brokerUrl with tcp://... and I never >>>>>>> get >>>>> any >>>>>>> exceptions... >>>>>>> >>>>>>> >>>>>>> Gary Tully wrote: >>>>>>>> >>>>>>>> If this is 5.2, and you do not provide a brokerUrl to your >>>>>>>> activemq >>>>>>>> connection factory then the failover transport will be used by >>>>> default >>>>>>> and >>>>>>>> it will block waiting to reconnect. >>>>>>>> Provide a brokerUrl and use "tcp://..." and you will get the >>>>> exception >>>>>>> you >>>>>>>> require. >>>>>>>> >>>>>>>> 2009/3/18 mffrench <mffre...@axway.com> >>>>>>>> >>>>>>>>> >>>>>>>>> Hello, >>>>>>>>> >>>>>>>>> if I kill ActiveMQ, there is no exception raised to my >>>>>>>>> connected >>>>> JMS >>>>>>>>> listener and so my client doesn't detect the link is broken >>>>>>>>> with >>>>>>>>> ActiveMQ. >>>>>>>>> I >>>>>>>>> think this is a bug which should be corrected. Is there any >>>>>>>>> issue >>>>>>> about >>>>>>>>> this >>>>>>>>> ? >>>>>>>>> >>>>>>>>> Thanks >>>>>>>>> -- >>>>>>>>> View this message in context: >>>>>>>>> >>>>>>> >>>>> http://www.nabble.com/Killing-activemq-with-connected-JMS-listener-tp22576446p22576446.html >>>>>>>>> Sent from the ActiveMQ - User mailing list archive at >>>>>>>>> Nabble.com. >>>>>>>>> >>>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> -- >>>>>>>> http://blog.garytully.com >>>>>>>> >>>>>>>> Open Source SOA >>>>>>>> http://FUSESource.com >>>>>>>> >>>>>>>> >>>>>>> >>>>>>> -- >>>>>>> View this message in context: >>>>>>> >>>>> http://www.nabble.com/Killing-activemq-with-connected-JMS-listener-tp22576446p22583895.html >>>>>>> Sent from the ActiveMQ - User mailing list archive at Nabble.com. >>>>>>> >>>>>>> >>>>>> >>>>>> >>>>>> -- >>>>>> http://blog.garytully.com >>>>>> >>>>>> Open Source SOA >>>>>> http://FUSESource.com >>>>>> >>>>>> >>>>> >>>>> -- >>>>> View this message in context: >>>>> http://www.nabble.com/Killing-activemq-with-connected-JMS-listener-tp22576446p22585079.html >>>>> Sent from the ActiveMQ - User mailing list archive at Nabble.com. >>>>> >>>>> >>>> >>>> >>>> -- >>>> http://blog.garytully.com >>>> >>>> Open Source SOA >>>> http://FUSESource.com >>>> >>>> >>> >>> >> >> -- >> View this message in context: >> http://www.nabble.com/Killing-activemq-with-connected-JMS-listener-tp22576446p22596871.html >> Sent from the ActiveMQ - User mailing list archive at Nabble.com. >> > > > -- View this message in context: http://www.nabble.com/Killing-activemq-with-connected-JMS-listener-tp22576446p22597960.html Sent from the ActiveMQ - User mailing list archive at Nabble.com.