Hi For me it seems Spring <bean> stuff doesn't offer fine grained control of startup/shutdown ordering of beans. And thus it can become troublesome to get properly ordered.
That said. James found an issue in Camel that would cause beans to be started earler than intended, under certain circumstances, such as when using 2+ <camelContext>. I would not expect that bug to affect your use-case. But you can try the 2.7 release to see if that helps. If you have AMQ embedded (server, and not just client) then AMQ should be started first, and stopped last. So you need to have Camel depend on AMQ On Fri, Mar 18, 2011 at 7:12 AM, Frank Schwarz <f...@gmx.net> wrote: > Hi, > > I am having trouble to shut-down Camel properly. One of three errors will > occur (at random) - see below. My setting is Apache Camel (2.6) with > ActiveMQ (5.4.2), Atomikos TransactionManager (3.7.0), and Spring (3.0.5) > > The errors will occur if I shutdown Camel indirectly by closing the Spring > context. If I shutdown the Camel context beforehand with > SpringCamelContext#destroy(), then the Spring context will also close > without any errors. > > I already experimented quite some time with 'depends-on'-attributes in the > Spring configuration - without luck so far. > What am I missing? > > Regards, > Frank > > (This is a re-post, as Nabble seems to cause problems with SPF.) > > (1) ------- > > 17.03.2011 22:34:12 com.atomikos.diagnostics.Slf4jConsole println > WARNUNG: atomikos connection pool 'amq1': destroying pool... > 17.03.2011 22:35:02 > org.springframework.jms.listener.DefaultMessageListenerContainer > handleListenerSetupFailure > WARNUNG: Setup of JMS message listener invoker failed for > destination 'OrderQueue' - trying to recover. Cause: Heuristic > completion: outcome state is mixed; nested exception is > javax.transaction.HeuristicMixedException: Heuristic Exception > 17.03.2011 22:35:03 com.atomikos.diagnostics.Slf4jConsole println > WARNUNG: Error in proxy > java.lang.IllegalStateException: XATransactionResource already closed > at > > com.atomikos.datasource.xa.XATransactionalResource.getResourceTransaction(XATransactionalResource.java:400) > at > > com.atomikos.datasource.xa.session.BranchEnlistedStateHandler.<init>(BranchEnlistedStateHandler.java:54) > at > > com.atomikos.datasource.xa.session.NotInBranchStateHandler.checkEnlistBeforeUse(NotInBranchStateHandler.java:66) > at > > com.atomikos.datasource.xa.session.TransactionContext.checkEnlistBeforeUse(TransactionContext.java:85) > at > > com.atomikos.datasource.xa.session.SessionHandleState.notifyBeforeUse(SessionHandleState.java:176) > at > > com.atomikos.jms.ConsumerProducerSupport.enlist(ConsumerProducerSupport.java:92) > at > > com.atomikos.jms.AtomikosJmsMessageConsumerProxy.receive(AtomikosJmsMessageConsumerProxy.java:70) > at > > com.atomikos.jms.AtomikosJmsMessageConsumerProxy.receive(AtomikosJmsMessageConsumerProxy.java:137) > at > > org.springframework.jms.listener.AbstractPollingMessageListenerContainer.receiveMessage(AbstractPollingMessageListenerContainer.java:429) > at > > org.springframework.jms.listener.AbstractPollingMessageListenerContainer.doReceiveAndExecute(AbstractPollingMessageListenerContainer.java:310) > 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:662) > > 17.03.2011 22:35:08 > org.springframework.jms.listener.DefaultMessageListenerContainer > handleListenerSetupFailure > WARNUNG: Setup of JMS message listener invoker failed for > destination 'OrderQueue' - trying to recover. Cause: Error in proxy; > nested exception is java.lang.IllegalStateException: > XATransactionResource already closed > > > (2) ------- > > WARNUNG: atomikos connection pool 'amq1': destroying pool... > 17.03.2011 22:36:45 > org.springframework.jms.listener.DefaultMessageListenerContainer > handleListenerSetupFailure > WARNUNG: Setup of JMS message listener invoker failed for > destination 'OrderQueue' - trying to recover. Cause: Heuristic > completion: outcome state is mixed; nested exception is > javax.transaction.HeuristicMixedException: Heuristic Exception > > > (3) ----- > > WARNUNG: atomikos connection pool 'amq1': destroying pool... > 17.03.2011 22:37:56 com.atomikos.diagnostics.Slf4jConsole println > WARNUNG: Error delegating call to getTransacted on JMS driver > java.lang.NullPointerException > at > > org.apache.activemq.ActiveMQXASession.getTransacted(ActiveMQXASession.java:72) > 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:597) > at > > com.atomikos.jms.AtomikosJmsXaSessionProxy.invoke(AtomikosJmsXaSessionProxy.java:183) > at $Proxy45.getTransacted(Unknown Source) > at > > org.springframework.jms.listener.AbstractMessageListenerContainer.commitIfNecessary(AbstractMessageListenerContainer.java:571) > at > > org.springframework.jms.listener.AbstractPollingMessageListenerContainer.doReceiveAndExecute(AbstractPollingMessageListenerContainer.java:358) > 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:662) > > 17.03.2011 22:37:56 > org.springframework.jms.listener.DefaultMessageListenerContainer > handleListenerSetupFailure > WARNUNG: Setup of JMS message listener invoker failed for > destination 'OrderQueue' - trying to recover. Cause: null > 17.03.2011 22:37:56 com.atomikos.diagnostics.Slf4jConsole println > WARNUNG: Error in proxy > java.lang.IllegalStateException: XATransactionResource already closed > at > > com.atomikos.datasource.xa.XATransactionalResource.getResourceTransaction(XATransactionalResource.java:400) > at > > com.atomikos.datasource.xa.session.BranchEnlistedStateHandler.<init>(BranchEnlistedStateHandler.java:54) > at > > com.atomikos.datasource.xa.session.NotInBranchStateHandler.checkEnlistBeforeUse(NotInBranchStateHandler.java:66) > at > > com.atomikos.datasource.xa.session.TransactionContext.checkEnlistBeforeUse(TransactionContext.java:85) > at > > com.atomikos.datasource.xa.session.SessionHandleState.notifyBeforeUse(SessionHandleState.java:176) > at > > com.atomikos.jms.ConsumerProducerSupport.enlist(ConsumerProducerSupport.java:92) > at > > com.atomikos.jms.AtomikosJmsMessageConsumerProxy.receive(AtomikosJmsMessageConsumerProxy.java:70) > at > > com.atomikos.jms.AtomikosJmsMessageConsumerProxy.receive(AtomikosJmsMessageConsumerProxy.java:137) > at > > org.springframework.jms.listener.AbstractPollingMessageListenerContainer.receiveMessage(AbstractPollingMessageListenerContainer.java:429) > at > > org.springframework.jms.listener.AbstractPollingMessageListenerContainer.doReceiveAndExecute(AbstractPollingMessageListenerContainer.java:310) > 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:662) > > 17.03.2011 22:38:01 > org.springframework.jms.listener.DefaultMessageListenerContainer > handleListenerSetupFailure > WARNUNG: Setup of JMS message listener invoker failed for > destination 'OrderQueue' - trying to recover. Cause: Error in proxy; > nested exception is java.lang.IllegalStateException: > XATransactionResource already closed > > -- Claus Ibsen ----------------- FuseSource Email: cib...@fusesource.com Web: http://fusesource.com Twitter: davsclaus Blog: http://davsclaus.blogspot.com/ Author of Camel in Action: http://www.manning.com/ibsen/