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