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/

Reply via email to