Hmm, seems like the rollback of the message on the queues was due to another problem. So we may not care so much, that Geronimo is throwing the exception on shutdown.
However, I'm still looking into this problem, because we get a similar "Got duplicate deregisterConnection for client:" exception when shutting down Geronimo if an MDB had sent any messages to another MDB. -------- Forwarded Message -------- From: Glenn Owen <[EMAIL PROTECTED]> To: [email protected] Subject: Problem during shutdown when using JMS in a GBean Date: Thu, 01 Mar 2007 11:43:38 -0400 I have a problem trying to utilize a JMS queue from a GBean in Geronimo 1.1.1. I believe I have correctly injected the Queue & Factory, as writing messages to the queue seems to work just fine, the problem occurs when Geronimo is restarted. I get an error on shutdown, that unfortunately has the side effect of restoring all the messages into the queues, so they get reprocessed on next start-up. Here's the important bits of the code (I've removed the Queue injection parts to simplify things) geronimo-application.xml: <sys:reference name="MyQueueFactory"> <sys:name>ProxyConnectionFactory</sys:name> </sys:reference> GBean Info: infoBuilder.addReference("MyQueueFactory", ManagedConnectionFactoryWrapper.class, NameFactory.JCA_MANAGED_CONNECTION_FACTORY); infoBuilder.setConstructor(new String[] {"MyQueueFactory"}); GBean Constructor: public MyProxy (ManagedConnectionFactoryWrapper pFactoryWrapper) { jmsFactory = (QueueConnectionFactory) pFactoryWrapper.getConnectionFactory(); QueueConnection sendQueueConn = (QueueConnection) jmsFactory.createConnection(); // do regular Queue type stuff ... sendQueueConn.close(); and during Geronimo shutdown I get..... 11:06:49,469 WARN [BrokerContainerImpl] Got duplicate deregisterConnection for client: ID:laptop-38073-1172761593045-18:0 11:06:49,474 WARN [TransportChannelSupport] Caught exception dispatching message and no ExceptionListener registered: javax.jms.JMSException: Error reading socket: java.io.EOFException javax.jms.JMSException: Error reading socket: java.io.EOFException at org.activemq.util.JMSExceptionHelper.newJMSException(JMSExceptionHelper.java:49) at org.activemq.transport.tcp.TcpTransportChannel.doClose(TcpTransportChannel.java:509) at org.activemq.transport.tcp.TcpTransportChannel.run(TcpTransportChannel.java:330) at java.lang.Thread.run(Thread.java:595) Caused by: java.io.EOFException at java.io.DataInputStream.readByte(DataInputStream.java:243) at org.activemq.io.AbstractWireFormat.readPacket(AbstractWireFormat.java:230) at org.activemq.transport.tcp.TcpTransportChannel.run(TcpTransportChannel.java:313) ... 1 more 11:06:49,503 INFO [ActiveMQManagedConnection] Error occured during close of a JMS connection. javax.jms.JMSException: syncSendTimedOut: connection no longer OK at org.activemq.ActiveMQConnection.syncSendPacket(ActiveMQConnection.java:1403) at org.activemq.ActiveMQConnection.sendConnectionInfoToBroker(ActiveMQConnection.java:1628) at org.activemq.ActiveMQConnection.close(ActiveMQConnection.java:763) at org.activemq.ra.ActiveMQManagedConnection.destroy(ActiveMQManagedConnection.java:225) at org.apache.geronimo.connector.outbound.SinglePoolConnectionInterceptor.internalDestroy(SinglePoolConnectionInterceptor.java:121) at org.apache.geronimo.connector.outbound.AbstractSinglePoolConnectionInterceptor.destroy(AbstractSinglePoolConnectionInterceptor.java:138) at org.apache.geronimo.connector.outbound.TransactionEnlistingInterceptor.destroy(TransactionEnlistingInterceptor.java:98) at org.apache.geronimo.connector.outbound.TransactionCachingInterceptor.destroy(TransactionCachingInterceptor.java:113) at org.apache.geronimo.connector.outbound.ConnectionHandleInterceptor.destroy(ConnectionHandleInterceptor.java:75) at org.apache.geronimo.connector.outbound.TCCLInterceptor.destroy(TCCLInterceptor.java:57) at org.apache.geronimo.connector.outbound.ConnectionTrackingInterceptor.destroy(ConnectionTrackingInterceptor.java:86) at org.apache.geronimo.connector.outbound.AbstractConnectionManager.doStop(AbstractConnectionManager.java:169) at org.apache.geronimo.gbean.runtime.GBeanInstance.destroyInstance(GBeanInstance.java:1143) at org.apache.geronimo.gbean.runtime.GBeanInstanceState.attemptFullStop(GBeanInstanceState.java:337) at org.apache.geronimo.gbean.runtime.GBeanInstanceState.stop(GBeanInstanceState.java:188) at org.apache.geronimo.gbean.runtime.GBeanInstance.stop(GBeanInstance.java:548) at org.apache.geronimo.kernel.basic.BasicKernel.stopGBean(BasicKernel.java:423) at org.apache.geronimo.gbean.runtime.GBeanInstanceState.stop(GBeanInstanceState.java:180) at org.apache.geronimo.gbean.runtime.GBeanInstance.stop(GBeanInstance.java:548) at org.apache.geronimo.kernel.basic.BasicKernel.stopGBean(BasicKernel.java:423) at org.apache.geronimo.gbean.runtime.GBeanInstanceState.stop(GBeanInstanceState.java:180) at org.apache.geronimo.gbean.runtime.GBeanInstance.stop(GBeanInstance.java:548) at org.apache.geronimo.kernel.basic.BasicKernel.stopGBean(BasicKernel.java:423) at org.apache.geronimo.kernel.config.KernelConfigurationManager$ShutdownHook.run(KernelConfigurationManager.java:310) at org.apache.geronimo.kernel.basic.BasicKernel.notifyShutdownHooks(BasicKernel.java:668) at org.apache.geronimo.kernel.basic.BasicKernel.shutdown(BasicKernel.java:645) at org.apache.geronimo.kernel.KernelGBean.shutdown(KernelGBean.java:378) at org.apache.geronimo.kernel.KernelGBean$$FastClassByCGLIB$$1cccefc9.invoke(<generated>) at net.sf.cglib.reflect.FastMethod.invoke(FastMethod.java:53) at org.apache.geronimo.gbean.runtime.FastMethodInvoker.invoke(FastMethodInvoker.java:38) at org.apache.geronimo.gbean.runtime.GBeanOperation.invoke(GBeanOperation.java:122) at org.apache.geronimo.gbean.runtime.GBeanInstance.invoke(GBeanInstance.java:852) at org.apache.geronimo.kernel.basic.BasicKernel.invoke(BasicKernel.java:239) at org.apache.geronimo.system.jmx.MBeanGBeanBridge.invoke(MBeanGBeanBridge.java:168) at com.sun.jmx.mbeanserver.DynamicMetaDataImpl.invoke(DynamicMetaDataImpl.java:213) at com.sun.jmx.mbeanserver.MetaDataImpl.invoke(MetaDataImpl.java:220) at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:815) at com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:784) at javax.management.remote.rmi.RMIConnectionImpl.doOperation(RMIConnectionImpl.java:1408) at javax.management.remote.rmi.RMIConnectionImpl.access$100(RMIConnectionImpl.java:81) at javax.management.remote.rmi.RMIConnectionImpl$PrivilegedOperation.run(RMIConnectionImpl.java:1245) at java.security.AccessController.doPrivileged(Native Method) at javax.management.remote.rmi.RMIConnectionImpl.doPrivilegedOperation(RMIConnectionImpl.java:1348) at javax.management.remote.rmi.RMIConnectionImpl.invoke(RMIConnectionImpl.java:782) at sun.reflect.GeneratedMethodAccessor190.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:585) at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:294) at sun.rmi.transport.Transport$1.run(Transport.java:153) at java.security.AccessController.doPrivileged(Native Method) at sun.rmi.transport.Transport.serviceCall(Transport.java:149) at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:466) at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:707) at java.lang.Thread.run(Thread.java:595) If don't do the connection close(), I get a different error..... 11:26:28,171 WARN [BrokerContainerImpl] No clientID available for client: brokerConnector-client:(10268338) : TcpTransportChannel: Socket[addr=/127.0.0.1,port=40729,localport=61616] 11:26:28,175 WARN [ActiveMQManagedConnection] Connection failed: javax.jms.JMSException: Error reading socket: java.io.EOFException 11:26:28,180 WARN [GeronimoConnectionEventListener] connectionErrorOccurred called with null javax.jms.JMSException: Error reading socket: java.io.EOFException at org.activemq.util.JMSExceptionHelper.newJMSException(JMSExceptionHelper.java:49) at org.activemq.transport.tcp.TcpTransportChannel.doClose(TcpTransportChannel.java:509) at org.activemq.transport.tcp.TcpTransportChannel.run(TcpTransportChannel.java:330) at java.lang.Thread.run(Thread.java:595) Caused by: java.io.EOFException at java.io.DataInputStream.readByte(DataInputStream.java:243) at org.activemq.io.AbstractWireFormat.readPacket(AbstractWireFormat.java:230) at org.activemq.transport.tcp.TcpTransportChannel.run(TcpTransportChannel.java:313) ... 1 more 11:26:28,185 INFO [ActiveMQManagedConnection] Error occured during close of a JMS connection. javax.jms.JMSException: syncSendTimedOut: connection no longer OK at org.activemq.ActiveMQConnection.syncSendPacket(ActiveMQConnection.java:1403) at org.activemq.ActiveMQConnection.sendConnectionInfoToBroker(ActiveMQConnection.java:1628) at org.activemq.ActiveMQConnection.close(ActiveMQConnection.java:763) at org.activemq.ra.ActiveMQManagedConnection.destroy(ActiveMQManagedConnection.java:225) at org.apache.geronimo.connector.outbound.MCFConnectionInterceptor.returnConnection(MCFConnectionInterceptor.java:57) at org.apache.geronimo.connector.outbound.XAResourceInsertionInterceptor.returnConnection(XAResourceInsertionInterceptor.java:47) at org.apache.geronimo.connector.outbound.SinglePoolConnectionInterceptor.internalReturn(SinglePoolConnectionInterceptor.java:162) at org.apache.geronimo.connector.outbound.AbstractSinglePoolConnectionInterceptor.returnConnection(AbstractSinglePoolConnectionInterceptor.java:119) at org.apache.geronimo.connector.outbound.TransactionEnlistingInterceptor.returnConnection(TransactionEnlistingInterceptor.java:94) at org.apache.geronimo.connector.outbound.TransactionCachingInterceptor.returnConnection(TransactionCachingInterceptor.java:93) at org.apache.geronimo.connector.outbound.ConnectionHandleInterceptor.returnConnection(ConnectionHandleInterceptor.java:71) at org.apache.geronimo.connector.outbound.TCCLInterceptor.returnConnection(TCCLInterceptor.java:50) at org.apache.geronimo.connector.outbound.ConnectionTrackingInterceptor.returnConnection(ConnectionTrackingInterceptor.java:82) at org.apache.geronimo.connector.outbound.GeronimoConnectionEventListener.connectionErrorOccurred(GeronimoConnectionEventListener.java:81) at org.activemq.ra.ActiveMQManagedConnection.fireErrorOccurredEvent(ActiveMQManagedConnection.java:192) at org.activemq.ra.ActiveMQManagedConnection.onException(ActiveMQManagedConnection.java:409) at org.activemq.transport.TransportChannelSupport.onAsyncException(TransportChannelSupport.java:445) at org.activemq.transport.tcp.TcpTransportChannel.doClose(TcpTransportChannel.java:509) at org.activemq.transport.tcp.TcpTransportChannel.run(TcpTransportChannel.java:330) at java.lang.Thread.run(Thread.java:595) I must be missing something simple - but what is it? Note, I do need to admit I'm using Java 1.5 - if there's a chance it is the cause. Glenn.
