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.

Reply via email to