Hi everyone, I use the Geronimo TransactionManager with org.jencks.amqpool.XaPooledConnectionFactory for ActiveMQ and OpenJPA for a database. Everything is configured with spring.
I've done a simple test that take a message from a queue ("input queue"), persist it in a database and then send this message into another queue ("output queue"). Those steps are processed in the same global transaction (JTA). I don't know why, but when I start my bundle without sending any message to the "input queue", I see plenty of logs and a lot of warnings. Does someone have any idea why I get these stackTrace : WARN [DefaultMessageListenerContainer-1] (PooledSession.java:112) - Caught exception trying rollback() when putting session back into the pool: javax.jms.TransactionInProgressException: Cannot rollback() if an XA transaction is already in progress javax.jms.TransactionInProgressException: Cannot rollback() if an XA transaction is already in progress at org.apache.activemq.TransactionContext.rollback(TransactionContext.java:238) at org.apache.activemq.ActiveMQSession.rollback(ActiveMQSession.java:580) at org.jencks.amqpool.PooledSession.close(PooledSession.java:109) at org.jencks.amqpool.XaConnectionPool$Synchronization.afterCompletion(XaConnectionPool.java:89) at org.apache.geronimo.transaction.manager.TransactionImpl.afterCompletion(TransactionImpl.java:540) at org.apache.geronimo.transaction.manager.TransactionImpl.afterCompletion(TransactionImpl.java:533) at org.apache.geronimo.transaction.manager.TransactionImpl.commit(TransactionImpl.java:329) at org.apache.geronimo.transaction.manager.TransactionManagerImpl.commit(TransactionManagerImpl.java:252) at org.springframework.transaction.jta.JtaTransactionManager.doCommit(JtaTransactionManager.java:1009) at org.springframework.transaction.support.AbstractPlatformTransactionManager.processCommit(AbstractPlatformTransactionManager.java:754) at org.springframework.transaction.support.AbstractPlatformTransactionManager.commit(AbstractPlatformTransactionManager.java:723) at org.apache.aries.transaction.GeronimoPlatformTransactionManager.commit(GeronimoPlatformTransactionManager.java:76) at org.springframework.jms.listener.AbstractPollingMessageListenerContainer.receiveAndExecute(AbstractPollingMessageListenerContainer.java:257) at org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.invokeListener(DefaultMessageListenerContainer.java:1058) at org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.executeOngoingLoop(DefaultMessageListenerContainer.java:1050) at org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.run(DefaultMessageListenerContainer.java:947) at java.lang.Thread.run(Thread.java:619) WARN [DefaultMessageListenerContainer-1] (DefaultMessageListenerContainer.java:821) - Setup of JMS message listener invoker failed for destination 'SimpleInWithExceptionB' - trying to recover. Cause: Local JMS transaction failed to commit; nested exception is org.apache.activemq.AlreadyClosedException: Cannot use The session has already been closed as it has already been closed INFO [DefaultMessageListenerContainer-1] (DefaultMessageListenerContainer.java:862) - Successfully refreshed JMS Connection WARN [DefaultMessageListenerContainer-1] (TransactionImpl.java:208) - Unable to enlist XAResource org.apache.activemq.TransactionContext@62953a, errorCode: -6 javax.transaction.xa.XAException at org.apache.activemq.TransactionContext.start(TransactionContext.java:334) at org.apache.geronimo.transaction.manager.TransactionImpl.enlistResource(TransactionImpl.java:202) at org.jencks.amqpool.XaConnectionPool.createSession(XaConnectionPool.java:56) at org.jencks.amqpool.PooledConnection.createSession(PooledConnection.java:132) at org.springframework.jms.support.JmsAccessor.createSession(JmsAccessor.java:196) at org.springframework.jms.listener.AbstractPollingMessageListenerContainer.access$1(AbstractPollingMessageListenerContainer.java:1) at org.springframework.jms.listener.AbstractPollingMessageListenerContainer$MessageListenerContainerResourceFactory.createSession(AbstractPollingMessageListenerContainer.java:530) at org.springframework.jms.connection.ConnectionFactoryUtils.doGetTransactionalSession(ConnectionFactoryUtils.java:300) at org.springframework.jms.listener.AbstractPollingMessageListenerContainer.doReceiveAndExecute(AbstractPollingMessageListenerContainer.java:288) at org.springframework.jms.listener.AbstractPollingMessageListenerContainer.receiveAndExecute(AbstractPollingMessageListenerContainer.java:243) at org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.invokeListener(DefaultMessageListenerContainer.java:1058) at org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.executeOngoingLoop(DefaultMessageListenerContainer.java:1050) at org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.run(DefaultMessageListenerContainer.java:947) at java.lang.Thread.run(Thread.java:619) WARN [DefaultMessageListenerContainer-1] (TransactionImpl.java:542) - Unexpected exception from afterCompletion; continuing java.lang.RuntimeException: org.apache.activemq.AlreadyClosedException: Cannot use The session has already been closed as it has already been closed at org.jencks.amqpool.XaConnectionPool$Synchronization.afterCompletion(XaConnectionPool.java:92) at org.apache.geronimo.transaction.manager.TransactionImpl.afterCompletion(TransactionImpl.java:540) at org.apache.geronimo.transaction.manager.TransactionImpl.afterCompletion(TransactionImpl.java:533) at org.apache.geronimo.transaction.manager.TransactionImpl.rollback(TransactionImpl.java:496) at org.apache.geronimo.transaction.manager.TransactionManagerImpl.rollback(TransactionManagerImpl.java:265) at org.springframework.transaction.jta.JtaTransactionManager.doRollback(JtaTransactionManager.java:1036) at org.springframework.transaction.support.AbstractPlatformTransactionManager.processRollback(AbstractPlatformTransactionManager.java:845) at org.springframework.transaction.support.AbstractPlatformTransactionManager.rollback(AbstractPlatformTransactionManager.java:822) at org.apache.aries.transaction.GeronimoPlatformTransactionManager.rollback(GeronimoPlatformTransactionManager.java:80) at org.springframework.jms.listener.AbstractPollingMessageListenerContainer.rollbackOnException(AbstractPollingMessageListenerContainer.java:410) at org.springframework.jms.listener.AbstractPollingMessageListenerContainer.receiveAndExecute(AbstractPollingMessageListenerContainer.java:246) at org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.invokeListener(DefaultMessageListenerContainer.java:1058) at org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.executeOngoingLoop(DefaultMessageListenerContainer.java:1050) at org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.run(DefaultMessageListenerContainer.java:947) at java.lang.Thread.run(Thread.java:619) Caused by: org.apache.activemq.AlreadyClosedException: Cannot use The session has already been closed as it has already been closed at org.jencks.amqpool.PooledSession.getSession(PooledSession.java:283) at org.jencks.amqpool.PooledSession.close(PooledSession.java:91) at org.jencks.amqpool.XaConnectionPool$Synchronization.afterCompletion(XaConnectionPool.java:89) ... 14 more Arnaud Deprez Analyst-Programmer Acquiring Back-Office +32 2 727 72 09 arnaud.dep...@atos.net<http://intranet.atosworldline.com/Region1-fr/firstname.lastn...@atos.net> Chaussee de Haecht 1442 Haachtsesteenweg 1130 Brussels Belgium atosworldline.be<http://atosworldline.be/> [cid:image002.gif@01CD2D3E.5A8377C0] P please don't print unless you really need to ________________________________ Atos Worldline SA/NV - Chaussee de Haecht 1442 Haachtsesteenweg - 1130 Brussels - Belgium RPM-RPR Bruxelles-Brussel - TVA-BTW BE 0418.547.872 Bankrekening-Compte Bancaire-Bank Account 310-0269424-44 BIC BBRUBEBB - IBAN BE55 3100 2694 2444 "The information contained in this e-mail and any attachment thereto is confidential and may contain information which is protected by intellectual property rights. This information is intended for the exclusive use of the recipient(s) named above. This e-mail does not constitute any binding relationship or offer toward any of the addressees. If you are not one of the addressees , one of their employees or a proxy holder entitled to hand over this message to the addressee(s), any use of the information contained herein (e.g. reproduction, divulgation, communication or distribution,...) is prohibited. If you have received this message in error, please notify the sender and destroy it immediately after. The integrity and security of this message cannot be guaranteed and it may be subject to data corruption, interception and unauthorized amendment, for which we accept no liability."