Hi all, I have configured Active MQ 5.0.0 integration in JBoss AS 4.0.5 according to http://activemq.apache.org/integrating-apache-activemq-with-jboss.html.
I modified also jboss.xml deployment descriptor so that my MDB uses "Standard Message Inflow Driven Bean" container configuration and "message-inflow-driven-bean" invoker proxy binding of JBoss: <message-driven> <ejb-name>SimpleQueueConsumer</ejb-name> <resource-adapter-name>activemq-ra.rar</resource-adapter-name> <configuration-name>Standard Message Inflow Driven Bean</configuration-name> </message-driven> With this setup, everything works fine until I simulate a RuntimeException exception beeing thrown from MDB onMessage() method. When doing this I see that: - Message remains in queue (=> OK) - No further message is delivered to my MDB - Subscription to queue for my MDB does not exist anymore (checked using jconsole / JMX) JBoss server log contains following error: 2008-04-17 07:03:06,143 ERROR [org.apache.activemq.ActiveMQSession] (WorkManager(3)-10:) error dispatching message: javax.ejb.TransactionRolledbackLocalException: bye at org.jboss.ejb.plugins.AbstractTxInterceptor.invokeNext(AbstractTxInterceptor.java:262) at org.jboss.ejb.plugins.TxInterceptorCMT.runWithTransactions(TxInterceptorCMT.java:350) at org.jboss.ejb.plugins.TxInterceptorCMT.invoke(TxInterceptorCMT.java:181) at org.jboss.ejb.plugins.RunAsSecurityInterceptor.invoke(RunAsSecurityInterceptor.java:109) at org.jboss.ejb.plugins.LogInterceptor.invoke(LogInterceptor.java:205) at org.jboss.ejb.plugins.ProxyFactoryFinderInterceptor.invoke(ProxyFactoryFinderInterceptor.java:136) at org.jboss.ejb.MessageDrivenContainer.internalInvoke(MessageDrivenContainer.java:402) at org.jboss.ejb.Container.invoke(Container.java:954) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:585) at org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:155) at org.jboss.mx.server.Invocation.dispatch(Invocation.java:94) at org.jboss.mx.server.Invocation.invoke(Invocation.java:86) at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:264) at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:659) at org.jboss.invocation.local.LocalInvoker$MBeanServerAction.invoke(LocalInvoker.java:169) at org.jboss.invocation.local.LocalInvoker.invoke(LocalInvoker.java:118) at org.jboss.invocation.InvokerInterceptor.invokeLocal(InvokerInterceptor.java:209) at org.jboss.invocation.InvokerInterceptor.invoke(InvokerInterceptor.java:195) at org.jboss.proxy.TransactionInterceptor.invoke(TransactionInterceptor.java:61) at org.jboss.ejb.plugins.inflow.MessageEndpointInterceptor.delivery(MessageEndpointInterceptor.java:263) at org.jboss.ejb.plugins.inflow.MessageEndpointInterceptor.invoke(MessageEndpointInterceptor.java:140) at org.jboss.proxy.ClientMethodInterceptor.invoke(ClientMethodInterceptor.java:74) at org.jboss.proxy.ClientContainer.invoke(ClientContainer.java:100) at $Proxy85.onMessage(Unknown Source) at org.apache.activemq.ra.MessageEndpointProxy$MessageEndpointAlive.onMessage(MessageEndpointProxy.java:116) at org.apache.activemq.ra.MessageEndpointProxy.onMessage(MessageEndpointProxy.java:59) at org.apache.activemq.ActiveMQSession.run(ActiveMQSession.java:727) at org.apache.activemq.ra.ServerSessionImpl.run(ServerSessionImpl.java:164) at org.jboss.resource.work.WorkWrapper.execute(WorkWrapper.java:204) at org.jboss.util.threadpool.BasicTaskWrapper.run(BasicTaskWrapper.java:275) at EDU.oswego.cs.dl.util.concurrent.PooledExecutor$Worker.run(PooledExecutor.java:743) at java.lang.Thread.run(Thread.java:595) Caused by: java.lang.RuntimeException: bye at com.acsinc.test.jms.ejb.SimpleQueueConsumerBean.onMessage(SimpleQueueConsumerBean.java:59) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:585) at org.jboss.invocation.Invocation.performCall(Invocation.java:359) at org.jboss.ejb.MessageDrivenContainer$ContainerInterceptor.invoke(MessageDrivenContainer.java:495) at org.jboss.resource.connectionmanager.CachedConnectionInterceptor.invoke(CachedConnectionInterceptor.java:158) at org.jboss.ejb.plugins.MessageDrivenInstanceInterceptor.invoke(MessageDrivenInstanceInterceptor.java:116) at org.jboss.ejb.plugins.CallValidationInterceptor.invoke(CallValidationInterceptor.java:63) at org.jboss.ejb.plugins.AbstractTxInterceptor.invokeNext(AbstractTxInterceptor.java:121) ... 34 more 2008-04-17 07:03:06,174 INFO [org.apache.activemq.ra.ServerSessionImpl:1] (WorkManager(3)-10:) Endpoint failed to process message. Reason: java.lang.RuntimeException: Endpoint after delivery notification failure 2008-04-17 07:03:06,180 WARN [org.jboss.tm.TransactionImpl] (WorkManager(3)-10:) XAException: tx=TransactionImpl:XidImpl[FormatId=257, GlobalId=WS007/5, BranchQual=, localId=5] errorCode=XAER_RMFAIL javax.transaction.xa.XAException: The connection is already closed at org.apache.activemq.TransactionContext.toXAException(TransactionContext.java:624) at org.apache.activemq.TransactionContext.setXid(TransactionContext.java:559) at org.apache.activemq.TransactionContext.end(TransactionContext.java:339) at org.apache.activemq.ra.LocalAndXATransaction.end(LocalAndXATransaction.java:90) at org.jboss.tm.TransactionImpl$Resource.endResource(TransactionImpl.java:2143) at org.jboss.tm.TransactionImpl$Resource.endResource(TransactionImpl.java:2118) at org.jboss.tm.TransactionImpl.endResources(TransactionImpl.java:1462) at org.jboss.tm.TransactionImpl.rollback(TransactionImpl.java:411) at org.jboss.tm.TxManager.rollback(TxManager.java:364) at org.jboss.ejb.plugins.inflow.MessageEndpointInterceptor.endTransaction(MessageEndpointInterceptor.java:430) at org.jboss.ejb.plugins.inflow.MessageEndpointInterceptor.finish(MessageEndpointInterceptor.java:308) at org.jboss.ejb.plugins.inflow.MessageEndpointInterceptor.release(MessageEndpointInterceptor.java:166) at org.jboss.ejb.plugins.inflow.MessageEndpointInterceptor.invoke(MessageEndpointInterceptor.java:126) at org.jboss.proxy.ClientMethodInterceptor.invoke(ClientMethodInterceptor.java:74) at org.jboss.proxy.ClientContainer.invoke(ClientContainer.java:100) at $Proxy85.release(Unknown Source) at org.apache.activemq.ra.MessageEndpointProxy$MessageEndpointDead.enter(MessageEndpointProxy.java:136) at org.apache.activemq.ra.MessageEndpointProxy$MessageEndpointState.transition(MessageEndpointProxy.java:94) at org.apache.activemq.ra.MessageEndpointProxy$MessageEndpointAlive.release(MessageEndpointProxy.java:129) at org.apache.activemq.ra.MessageEndpointProxy.release(MessageEndpointProxy.java:67) at org.apache.activemq.ra.ServerSessionImpl.close(ServerSessionImpl.java:250) at org.apache.activemq.ra.ServerSessionPoolImpl.removeFromPool(ServerSessionPoolImpl.java:181) at org.apache.activemq.ra.ServerSessionImpl.run(ServerSessionImpl.java:176) at org.jboss.resource.work.WorkWrapper.execute(WorkWrapper.java:204) at org.jboss.util.threadpool.BasicTaskWrapper.run(BasicTaskWrapper.java:275) at EDU.oswego.cs.dl.util.concurrent.PooledExecutor$Worker.run(PooledExecutor.java:743) at java.lang.Thread.run(Thread.java:595) Caused by: org.apache.activemq.ConnectionClosedException: The connection is already closed at org.apache.activemq.ActiveMQConnection.checkClosed(ActiveMQConnection.java:1244) at org.apache.activemq.ActiveMQConnection.checkClosedOrFailed(ActiveMQConnection.java:1231) at org.apache.activemq.TransactionContext.setXid(TransactionContext.java:556) ... 25 more 2008-04-17 07:03:06,209 WARN [org.jboss.tm.TransactionImpl] (WorkManager(3)-10:) XAException: tx=TransactionImpl:XidImpl[FormatId=257, GlobalId=WS007/5, BranchQual=, localId=5] errorCode=XAER_RMFAIL javax.transaction.xa.XAException: The connection is already closed at org.apache.activemq.TransactionContext.toXAException(TransactionContext.java:624) at org.apache.activemq.TransactionContext.rollback(TransactionContext.java:423) at org.apache.activemq.ra.LocalAndXATransaction.rollback(LocalAndXATransaction.java:128) at org.jboss.tm.TransactionImpl$Resource.rollback(TransactionImpl.java:2277) at org.jboss.tm.TransactionImpl.rollbackResources(TransactionImpl.java:1837) at org.jboss.tm.TransactionImpl.rollback(TransactionImpl.java:412) at org.jboss.tm.TxManager.rollback(TxManager.java:364) at org.jboss.ejb.plugins.inflow.MessageEndpointInterceptor.endTransaction(MessageEndpointInterceptor.java:430) at org.jboss.ejb.plugins.inflow.MessageEndpointInterceptor.finish(MessageEndpointInterceptor.java:308) at org.jboss.ejb.plugins.inflow.MessageEndpointInterceptor.release(MessageEndpointInterceptor.java:166) at org.jboss.ejb.plugins.inflow.MessageEndpointInterceptor.invoke(MessageEndpointInterceptor.java:126) at org.jboss.proxy.ClientMethodInterceptor.invoke(ClientMethodInterceptor.java:74) at org.jboss.proxy.ClientContainer.invoke(ClientContainer.java:100) at $Proxy85.release(Unknown Source) at org.apache.activemq.ra.MessageEndpointProxy$MessageEndpointDead.enter(MessageEndpointProxy.java:136) at org.apache.activemq.ra.MessageEndpointProxy$MessageEndpointState.transition(MessageEndpointProxy.java:94) at org.apache.activemq.ra.MessageEndpointProxy$MessageEndpointAlive.release(MessageEndpointProxy.java:129) at org.apache.activemq.ra.MessageEndpointProxy.release(MessageEndpointProxy.java:67) at org.apache.activemq.ra.ServerSessionImpl.close(ServerSessionImpl.java:250) at org.apache.activemq.ra.ServerSessionPoolImpl.removeFromPool(ServerSessionPoolImpl.java:181) at org.apache.activemq.ra.ServerSessionImpl.run(ServerSessionImpl.java:176) at org.jboss.resource.work.WorkWrapper.execute(WorkWrapper.java:204) at org.jboss.util.threadpool.BasicTaskWrapper.run(BasicTaskWrapper.java:275) at EDU.oswego.cs.dl.util.concurrent.PooledExecutor$Worker.run(PooledExecutor.java:743) at java.lang.Thread.run(Thread.java:595) Caused by: org.apache.activemq.ConnectionClosedException: The connection is already closed at org.apache.activemq.ActiveMQConnection.checkClosed(ActiveMQConnection.java:1244) at org.apache.activemq.ActiveMQConnection.checkClosedOrFailed(ActiveMQConnection.java:1231) at org.apache.activemq.TransactionContext.rollback(TransactionContext.java:407) ... 23 more Hence my questions: - Is it correct to integrate Active MQ with MDB deployed in JBoss by using this container configuration "Standard Message Inflow Driven Bean" and specify Active MQ RA name? I have tried alternative method where JBoss MQ is replaced by Active MQ according to JBoss configuration guide. However I cannot get this working because Active MQ does not implement Connection.getConnectionConsumer() called by JBoss MDB container. - What needs to be configured in JBoss AS and Active MQ so that MDB Container continues to consume messages after an exception in MDB? Thanks in advance for your help, Samuel -- View this message in context: http://www.nabble.com/Messages-delivery-to-JBoss-MDB-stopped-after-an-exception-tp16741417s2354p16741417.html Sent from the ActiveMQ - User mailing list archive at Nabble.com.