You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@camel.apache.org by Zheng Feng <zf...@redhat.com> on 2020/08/30 15:58:27 UTC

Re: CDI + SJMS + transacted

Hi Dmitry,

It seems that SJMS [1]  currently only supports the use of internal JMS
Transactions. There is no support for the Camel Transaction Processor or
the Java Transaction API (JTA). Also if you want to use the JTA transaction
provided by the camel-cdi, the TransactionManager should be available via
JNDI "java:/TransactionManager". Then you are running the camel in the
standalone environment, and the transaction manager should be provided by
the third party implementation, such as Narayana ( you can find the jta
standalone example here [2]). The NPE I think should be fixed by
CAMEL-14918 [3], and I will try to backport it to the 3.4.x

Regards,
Zheng Feng

[1] https://camel.apache.org/components/latest/sjms-component.html
[2] https://github.com/jbosstm/quickstart/tree/master/jta-1_2-standalone
[3]
https://github.com/apache/camel/commit/4421b2bba294dd8828621684c7670f78d811ecd8#diff-773b20d331dac13fb17acfa0f58ac01f

On Sat, Aug 29, 2020 at 5:50 AM Shultz, Dmitry <Dm...@kaltire.com>
wrote:

> Hi All,
>
> I'm probably doing something  wrong/stupid, but I can't get the sjms
> (recent Camel, but same true for 2.25.2) to leave failed messages in the
> JMS topic (AMQ Artemis) after exception.
> This is what logged:
>
> [ctiveMQ-client-global-threads)] TransactionErrorHandler        WARN
> Transaction rollback (0x5cd1283) redelivered(false) for (MessageId:
> ID:bbaa590d-e975-11ea-9ad0-6c4b902fc0e1 on ExchangeId:
> ID-Kal030841-1598650245838-0-1) caught: null
> [ctiveMQ-client-global-threads)] TransactionErrorHandler        WARN
> Transaction rollback (0x5cd1283) redelivered(false) for (MessageId:
> ID:bbaa590d-e975-11ea-9ad0-6c4b902fc0e1 on ExchangeId:
> ID-Kal030841-1598650245838-0-1) caught: null
> [ctiveMQ-client-global-threads)] TransactionErrorHandler        WARN
> Transaction rollback (0x5cd1283) redelivered(false) for (MessageId:
> ID:bbaa590d-e975-11ea-9ad0-6c4b902fc0e1 on ExchangeId:
> ID-Kal030841-1598650245838-0-1) caught: null
> [ctiveMQ-client-global-threads)] TransactionErrorHandler        ERROR
> Failed delivery for (MessageId: ID:bbaa590d-e975-11ea-9ad0-6c4b902fc0e1 on
> ExchangeId: ID-Kal030841-1598650245838-0-1). Exhausted after delivery
> attempt: 3 caught: java.lang.NullPointerException
>
> Message History (complete message history is disabled)
>
> ---------------------------------------------------------------------------------------------------------------------------------------
> RouteId              ProcessorId          Processor
>                                                 Elapsed (ms)
> [route1            ] [route1            ]
> [from[sjms://topic:topic:test?durableSubscriptionId=dmitr] [      1999]
>                 ...
> [route1            ] [transacted1       ] [transacted
>                                               ] [         0]
>
> Stacktrace
>
> ---------------------------------------------------------------------------------------------------------------------------------------
>
> java.lang.NullPointerException: null
>                 at
> org.apache.camel.cdi.transaction.TransactionalJtaTransactionPolicy.hasActiveTransaction(TransactionalJtaTransactionPolicy.java:105)
> ~[camel-cdi-3.4.3.jar:3.4.3]
>                 at
> org.apache.camel.cdi.transaction.RequiredJtaTransactionPolicy.run(RequiredJtaTransactionPolicy.java:26)
> ~[camel-cdi-3.4.3.jar:3.4.3]
>                 at
> org.apache.camel.jta.TransactionErrorHandler.doInTransactionTemplate(TransactionErrorHandler.java:193)
> ~[camel-jta-3.4.3.jar:3.4.3]
>                 at
> org.apache.camel.jta.TransactionErrorHandler.processInTransaction(TransactionErrorHandler.java:144)
> ~[camel-jta-3.4.3.jar:3.4.3]
>                 at
> org.apache.camel.jta.TransactionErrorHandler.process(TransactionErrorHandler.java:108)
> ~[camel-jta-3.4.3.jar:3.4.3]
>                 at
> org.apache.camel.jta.TransactionErrorHandler.process(TransactionErrorHandler.java:117)
> ~[camel-jta-3.4.3.jar:3.4.3]
>                 at
> org.apache.camel.processor.errorhandler.RedeliveryErrorHandler$RedeliveryTask.redeliver(RedeliveryErrorHandler.java:766)
> ~[camel-base-3.4.3.jar:3.4.3]
>                 at
> org.apache.camel.impl.engine.DefaultReactiveExecutor$Worker.schedule(DefaultReactiveExecutor.java:148)
> ~[camel-base-3.4.3.jar:3.4.3]
>                 at
> org.apache.camel.impl.engine.DefaultReactiveExecutor.scheduleMain(DefaultReactiveExecutor.java:60)
> ~[camel-base-3.4.3.jar:3.4.3]
>                 at
> org.apache.camel.processor.Pipeline.process(Pipeline.java:147)
> ~[camel-base-3.4.3.jar:3.4.3]
>                 at
> org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:286)
> ~[camel-base-3.4.3.jar:3.4.3]
>                 at
> org.apache.camel.impl.engine.DefaultAsyncProcessorAwaitManager.process(DefaultAsyncProcessorAwaitManager.java:83)
> ~[camel-base-3.4.3.jar:3.4.3]
>                 at
> org.apache.camel.support.AsyncProcessorSupport.process(AsyncProcessorSupport.java:40)
> ~[camel-support-3.4.3.jar:3.4.3]
>                 at
> org.apache.camel.component.sjms.consumer.InOnlyMessageHandler.handleMessage(InOnlyMessageHandler.java:52)
> ~[camel-sjms-3.4.3.jar:3.4.3]
>                 at
> org.apache.camel.component.sjms.consumer.AbstractMessageHandler.onMessage(AbstractMessageHandler.java:81)
> ~[camel-sjms-3.4.3.jar:3.4.3]
>                 at
> org.apache.activemq.artemis.jms.client.JMSMessageListenerWrapper.onMessage(JMSMessageListenerWrapper.java:110)
> ~[artemis-jms-client-2.14.0.jar:2.14.0]
>                 at
> org.apache.activemq.artemis.core.client.impl.ClientConsumerImpl.callOnMessage(ClientConsumerImpl.java:1030)
> ~[artemis-core-client-2.14.0.jar:2.14.0]
>
> So, it looks like rollback is kicked off, but when I restart the process
> message is gone from the JMS topic.
>
> Sample reproducer  (generated using
> -DarchetypeArtifactId=camel-archetype-cdi as described here
> https://camel.apache.org/components/latest/others/cdi.html ) is here
> https://github.com/zeppelinux/CamelCDISjmsTest
> Please  have a look.
>
> Cheers,
> Dmitry
>

Re: CDI + SJMS + transacted

Posted by Zheng Feng <zf...@redhat.com>.
I agree and we have to use the transaction manager which provides the
resume() and suspend() to support the "REQUIRED_NEW" and "NOT_SUPPORT"
policies. please can you raise a JIRA for the configurable jndi name ?

On Wed, Sep 2, 2020 at 4:09 PM Romain Manni-Bucau <rm...@gmail.com>
wrote:

> AFAIK the transaction manager jndi name is not standard (user transaction
> one is) and current one is not zven the "common" one which is in comp/ for
> webapps so IMHO:
>
> - camel-cdi must not have any ee feature (deployment should theorically
> fail if validated since injection must not work in standalone)
> - either jta integration should use user transaction or make tx mgr
> name/static method configurable as in
>
> https://github.com/apache/openjpa/blob/08bb3a5a0e7573622aa6dc25763cb6513095093b/openjpa-kernel/src/main/java/org/apache/openjpa/ee/AutomaticManagedRuntime.java#L55
>
> Le mer. 2 sept. 2020 à 08:33, Zheng Feng <zf...@redhat.com> a écrit :
>
> > FYI, I just raised https://github.com/apache/camel/pull/4151 to backport
> > the fix of CAMEL-14918 to 3.4.x. Also I test the "transacted=true" which
> > the sjms consumer that the message will be sent to the DLQ after the
> error
> > handler is exhausted. Is this what you expected ?
> >
> > On Wed, Sep 2, 2020 at 2:09 PM Zheng Feng <zf...@redhat.com> wrote:
> >
> > > Yeah, TomEE could provide the "java:/TransactionManager" since it is a
> > > J2EE container. I wonder if you use the "transacted=true" option on the
> > > sjms consumer which will rollback the transaction if the router is
> > failed.
> > >
> > >
> > > On Tue, Sep 1, 2020 at 4:35 AM Shultz, Dmitry <
> Dmitry_Shultz@kaltire.com
> > >
> > > wrote:
> > >
> > >> Thanks for the reply Zheng.
> > >>
> > >> I'm running very similar code in the TomEE and It doesn't fail on NPE.
> > >> See similar behaviour though:
> > >>
> > >> [Thread-0 (ActiveMQ-client] WARN  o.a.c.jta.TransactionErrorHandler -
> > >> Transaction rollback (0x30730302) redelivered(false) for (MessageId:
> > >> ID:9fd77209-ebc6-11ea-955a-1ee7171b8787 on ExchangeId:
> > >> ID-Kal030841-1598904862181-0-2) caught: test
> > >>
> > >> And after process restart the message is gone.
> > >>
> > >> I can confirm that when I use infinite re-delivery (the error handler
> > >> never exhausted) the message stays in the durable topic as forever
> even
> > >> after restart. So, I'm not sure if my expectation are correct i.e.
> does
> > it
> > >> supposed to stay in the topic after error handler redeliveries are
> > >> exhausted?
> > >>
> > >> Cheers,
> > >> Dmitry
> > >>
> > >>
> > >> -----Original Message-----
> > >> From: Zheng Feng [mailto:zfeng@redhat.com]
> > >> Sent: Sunday, August 30, 2020 8:58 AM
> > >> To: users@camel.apache.org
> > >> Subject: Re: CDI + SJMS + transacted
> > >>
> > >> Hi Dmitry,
> > >>
> > >> It seems that SJMS [1]  currently only supports the use of internal
> JMS
> > >> Transactions. There is no support for the Camel Transaction Processor
> or
> > >> the Java Transaction API (JTA). Also if you want to use the JTA
> > transaction
> > >> provided by the camel-cdi, the TransactionManager should be available
> > via
> > >> JNDI "java:/TransactionManager". Then you are running the camel in the
> > >> standalone environment, and the transaction manager should be provided
> > by
> > >> the third party implementation, such as Narayana ( you can find the
> jta
> > >> standalone example here [2]). The NPE I think should be fixed by
> > >> CAMEL-14918 [3], and I will try to backport it to the 3.4.x
> > >>
> > >> Regards,
> > >> Zheng Feng
> > >>
> > >> [1]
> > >>
> >
> https://urldefense.com/v3/__https://camel.apache.org/components/latest/sjms-component.html__;!!LdWlNaMnLCM!OJ-X6YfRy0exjKJ8PNWy-d5aHbD6mgnBfTRZXXKak6kEojLVTmcKwcF4puKY9P1BTwqO$
> > >> [2]
> > >>
> >
> https://urldefense.com/v3/__https://github.com/jbosstm/quickstart/tree/master/jta-1_2-standalone__;!!LdWlNaMnLCM!OJ-X6YfRy0exjKJ8PNWy-d5aHbD6mgnBfTRZXXKak6kEojLVTmcKwcF4puKY9Py3UShj$
> > >> [3]
> > >>
> > >>
> >
> https://urldefense.com/v3/__https://github.com/apache/camel/commit/4421b2bba294dd8828621684c7670f78d811ecd8*diff-773b20d331dac13fb17acfa0f58ac01f__;Iw!!LdWlNaMnLCM!OJ-X6YfRy0exjKJ8PNWy-d5aHbD6mgnBfTRZXXKak6kEojLVTmcKwcF4puKY9F_CLTBw$
> > >>
> > >> On Sat, Aug 29, 2020 at 5:50 AM Shultz, Dmitry <
> > Dmitry_Shultz@kaltire.com
> > >> >
> > >> wrote:
> > >>
> > >> > Hi All,
> > >> >
> > >> > I'm probably doing something  wrong/stupid, but I can't get the sjms
> > >> > (recent Camel, but same true for 2.25.2) to leave failed messages in
> > >> > the JMS topic (AMQ Artemis) after exception.
> > >> > This is what logged:
> > >> >
> > >> > [ctiveMQ-client-global-threads)] TransactionErrorHandler        WARN
> > >> > Transaction rollback (0x5cd1283) redelivered(false) for (MessageId:
> > >> > ID:bbaa590d-e975-11ea-9ad0-6c4b902fc0e1 on ExchangeId:
> > >> > ID-Kal030841-1598650245838-0-1) caught: null
> > >> > [ctiveMQ-client-global-threads)] TransactionErrorHandler        WARN
> > >> > Transaction rollback (0x5cd1283) redelivered(false) for (MessageId:
> > >> > ID:bbaa590d-e975-11ea-9ad0-6c4b902fc0e1 on ExchangeId:
> > >> > ID-Kal030841-1598650245838-0-1) caught: null
> > >> > [ctiveMQ-client-global-threads)] TransactionErrorHandler        WARN
> > >> > Transaction rollback (0x5cd1283) redelivered(false) for (MessageId:
> > >> > ID:bbaa590d-e975-11ea-9ad0-6c4b902fc0e1 on ExchangeId:
> > >> > ID-Kal030841-1598650245838-0-1) caught: null
> > >> > [ctiveMQ-client-global-threads)] TransactionErrorHandler
> ERROR
> > >> > Failed delivery for (MessageId:
> > >> > ID:bbaa590d-e975-11ea-9ad0-6c4b902fc0e1 on
> > >> > ExchangeId: ID-Kal030841-1598650245838-0-1). Exhausted after
> delivery
> > >> > attempt: 3 caught: java.lang.NullPointerException
> > >> >
> > >> > Message History (complete message history is disabled)
> > >> >
> > >> >
> > >>
> >
> ---------------------------------------------------------------------------------------------------------------------------------------
> > >> > RouteId              ProcessorId          Processor
> > >> >                                                 Elapsed (ms)
> > >> > [route1            ] [route1            ]
> > >> > [from[sjms://topic:topic:test?durableSubscriptionId=dmitr] [
> > 1999]
> > >> >                 ...
> > >> > [route1            ] [transacted1       ] [transacted
> > >> >                                               ] [         0]
> > >> >
> > >> > Stacktrace
> > >> >
> > >> >
> ----------------------------------------------------------------------
> > >> > -----------------------------------------------------------------
> > >> >
> > >> > java.lang.NullPointerException: null
> > >> >                 at
> > >> >
> org.apache.camel.cdi.transaction.TransactionalJtaTransactionPolicy.has
> > >> > ActiveTransaction(TransactionalJtaTransactionPolicy.java:105)
> > >> > ~[camel-cdi-3.4.3.jar:3.4.3]
> > >> >                 at
> > >> >
> org.apache.camel.cdi.transaction.RequiredJtaTransactionPolicy.run(Requ
> > >> > iredJtaTransactionPolicy.java:26)
> > >> > ~[camel-cdi-3.4.3.jar:3.4.3]
> > >> >                 at
> > >> >
> org.apache.camel.jta.TransactionErrorHandler.doInTransactionTemplate(T
> > >> > ransactionErrorHandler.java:193)
> > >> > ~[camel-jta-3.4.3.jar:3.4.3]
> > >> >                 at
> > >> >
> org.apache.camel.jta.TransactionErrorHandler.processInTransaction(Tran
> > >> > sactionErrorHandler.java:144)
> > >> > ~[camel-jta-3.4.3.jar:3.4.3]
> > >> >                 at
> > >> >
> org.apache.camel.jta.TransactionErrorHandler.process(TransactionErrorH
> > >> > andler.java:108)
> > >> > ~[camel-jta-3.4.3.jar:3.4.3]
> > >> >                 at
> > >> >
> org.apache.camel.jta.TransactionErrorHandler.process(TransactionErrorH
> > >> > andler.java:117)
> > >> > ~[camel-jta-3.4.3.jar:3.4.3]
> > >> >                 at
> > >> >
> org.apache.camel.processor.errorhandler.RedeliveryErrorHandler$Redeliv
> > >> > eryTask.redeliver(RedeliveryErrorHandler.java:766)
> > >> > ~[camel-base-3.4.3.jar:3.4.3]
> > >> >                 at
> > >> >
> org.apache.camel.impl.engine.DefaultReactiveExecutor$Worker.schedule(D
> > >> > efaultReactiveExecutor.java:148)
> > >> > ~[camel-base-3.4.3.jar:3.4.3]
> > >> >                 at
> > >> >
> org.apache.camel.impl.engine.DefaultReactiveExecutor.scheduleMain(Defa
> > >> > ultReactiveExecutor.java:60)
> > >> > ~[camel-base-3.4.3.jar:3.4.3]
> > >> >                 at
> > >> > org.apache.camel.processor.Pipeline.process(Pipeline.java:147)
> > >> > ~[camel-base-3.4.3.jar:3.4.3]
> > >> >                 at
> > >> >
> org.apache.camel.processor.CamelInternalProcessor.process(CamelInterna
> > >> > lProcessor.java:286)
> > >> > ~[camel-base-3.4.3.jar:3.4.3]
> > >> >                 at
> > >> >
> org.apache.camel.impl.engine.DefaultAsyncProcessorAwaitManager.process
> > >> > (DefaultAsyncProcessorAwaitManager.java:83)
> > >> > ~[camel-base-3.4.3.jar:3.4.3]
> > >> >                 at
> > >> >
> org.apache.camel.support.AsyncProcessorSupport.process(AsyncProcessorS
> > >> > upport.java:40)
> > >> > ~[camel-support-3.4.3.jar:3.4.3]
> > >> >                 at
> > >> >
> org.apache.camel.component.sjms.consumer.InOnlyMessageHandler.handleMe
> > >> > ssage(InOnlyMessageHandler.java:52)
> > >> > ~[camel-sjms-3.4.3.jar:3.4.3]
> > >> >                 at
> > >> >
> org.apache.camel.component.sjms.consumer.AbstractMessageHandler.onMess
> > >> > age(AbstractMessageHandler.java:81)
> > >> > ~[camel-sjms-3.4.3.jar:3.4.3]
> > >> >                 at
> > >> >
> org.apache.activemq.artemis.jms.client.JMSMessageListenerWrapper.onMes
> > >> > sage(JMSMessageListenerWrapper.java:110)
> > >> > ~[artemis-jms-client-2.14.0.jar:2.14.0]
> > >> >                 at
> > >> >
> org.apache.activemq.artemis.core.client.impl.ClientConsumerImpl.callOn
> > >> > Message(ClientConsumerImpl.java:1030)
> > >> > ~[artemis-core-client-2.14.0.jar:2.14.0]
> > >> >
> > >> > So, it looks like rollback is kicked off, but when I restart the
> > >> > process message is gone from the JMS topic.
> > >> >
> > >> > Sample reproducer  (generated using
> > >> > -DarchetypeArtifactId=camel-archetype-cdi as described here
> > >> >
> > https://urldefense.com/v3/__https://camel.apache.org/components/latest
> > >> >
> /others/cdi.html__;!!LdWlNaMnLCM!OJ-X6YfRy0exjKJ8PNWy-d5aHbD6mgnBfTRZX
> > >> > XKak6kEojLVTmcKwcF4puKY9NnrgwcA$  ) is here
> > >> >
> > https://urldefense.com/v3/__https://github.com/zeppelinux/CamelCDISjms
> > >> >
> Test__;!!LdWlNaMnLCM!OJ-X6YfRy0exjKJ8PNWy-d5aHbD6mgnBfTRZXXKak6kEojLVT
> > >> > mcKwcF4puKY9HBU5Opk$
> > >> > Please  have a look.
> > >> >
> > >> > Cheers,
> > >> > Dmitry
> > >> >
> > >>
> > >
> >
>

Re: CDI + SJMS + transacted

Posted by Romain Manni-Bucau <rm...@gmail.com>.
AFAIK the transaction manager jndi name is not standard (user transaction
one is) and current one is not zven the "common" one which is in comp/ for
webapps so IMHO:

- camel-cdi must not have any ee feature (deployment should theorically
fail if validated since injection must not work in standalone)
- either jta integration should use user transaction or make tx mgr
name/static method configurable as in
https://github.com/apache/openjpa/blob/08bb3a5a0e7573622aa6dc25763cb6513095093b/openjpa-kernel/src/main/java/org/apache/openjpa/ee/AutomaticManagedRuntime.java#L55

Le mer. 2 sept. 2020 à 08:33, Zheng Feng <zf...@redhat.com> a écrit :

> FYI, I just raised https://github.com/apache/camel/pull/4151 to backport
> the fix of CAMEL-14918 to 3.4.x. Also I test the "transacted=true" which
> the sjms consumer that the message will be sent to the DLQ after the error
> handler is exhausted. Is this what you expected ?
>
> On Wed, Sep 2, 2020 at 2:09 PM Zheng Feng <zf...@redhat.com> wrote:
>
> > Yeah, TomEE could provide the "java:/TransactionManager" since it is a
> > J2EE container. I wonder if you use the "transacted=true" option on the
> > sjms consumer which will rollback the transaction if the router is
> failed.
> >
> >
> > On Tue, Sep 1, 2020 at 4:35 AM Shultz, Dmitry <Dmitry_Shultz@kaltire.com
> >
> > wrote:
> >
> >> Thanks for the reply Zheng.
> >>
> >> I'm running very similar code in the TomEE and It doesn't fail on NPE.
> >> See similar behaviour though:
> >>
> >> [Thread-0 (ActiveMQ-client] WARN  o.a.c.jta.TransactionErrorHandler -
> >> Transaction rollback (0x30730302) redelivered(false) for (MessageId:
> >> ID:9fd77209-ebc6-11ea-955a-1ee7171b8787 on ExchangeId:
> >> ID-Kal030841-1598904862181-0-2) caught: test
> >>
> >> And after process restart the message is gone.
> >>
> >> I can confirm that when I use infinite re-delivery (the error handler
> >> never exhausted) the message stays in the durable topic as forever even
> >> after restart. So, I'm not sure if my expectation are correct i.e. does
> it
> >> supposed to stay in the topic after error handler redeliveries are
> >> exhausted?
> >>
> >> Cheers,
> >> Dmitry
> >>
> >>
> >> -----Original Message-----
> >> From: Zheng Feng [mailto:zfeng@redhat.com]
> >> Sent: Sunday, August 30, 2020 8:58 AM
> >> To: users@camel.apache.org
> >> Subject: Re: CDI + SJMS + transacted
> >>
> >> Hi Dmitry,
> >>
> >> It seems that SJMS [1]  currently only supports the use of internal JMS
> >> Transactions. There is no support for the Camel Transaction Processor or
> >> the Java Transaction API (JTA). Also if you want to use the JTA
> transaction
> >> provided by the camel-cdi, the TransactionManager should be available
> via
> >> JNDI "java:/TransactionManager". Then you are running the camel in the
> >> standalone environment, and the transaction manager should be provided
> by
> >> the third party implementation, such as Narayana ( you can find the jta
> >> standalone example here [2]). The NPE I think should be fixed by
> >> CAMEL-14918 [3], and I will try to backport it to the 3.4.x
> >>
> >> Regards,
> >> Zheng Feng
> >>
> >> [1]
> >>
> https://urldefense.com/v3/__https://camel.apache.org/components/latest/sjms-component.html__;!!LdWlNaMnLCM!OJ-X6YfRy0exjKJ8PNWy-d5aHbD6mgnBfTRZXXKak6kEojLVTmcKwcF4puKY9P1BTwqO$
> >> [2]
> >>
> https://urldefense.com/v3/__https://github.com/jbosstm/quickstart/tree/master/jta-1_2-standalone__;!!LdWlNaMnLCM!OJ-X6YfRy0exjKJ8PNWy-d5aHbD6mgnBfTRZXXKak6kEojLVTmcKwcF4puKY9Py3UShj$
> >> [3]
> >>
> >>
> https://urldefense.com/v3/__https://github.com/apache/camel/commit/4421b2bba294dd8828621684c7670f78d811ecd8*diff-773b20d331dac13fb17acfa0f58ac01f__;Iw!!LdWlNaMnLCM!OJ-X6YfRy0exjKJ8PNWy-d5aHbD6mgnBfTRZXXKak6kEojLVTmcKwcF4puKY9F_CLTBw$
> >>
> >> On Sat, Aug 29, 2020 at 5:50 AM Shultz, Dmitry <
> Dmitry_Shultz@kaltire.com
> >> >
> >> wrote:
> >>
> >> > Hi All,
> >> >
> >> > I'm probably doing something  wrong/stupid, but I can't get the sjms
> >> > (recent Camel, but same true for 2.25.2) to leave failed messages in
> >> > the JMS topic (AMQ Artemis) after exception.
> >> > This is what logged:
> >> >
> >> > [ctiveMQ-client-global-threads)] TransactionErrorHandler        WARN
> >> > Transaction rollback (0x5cd1283) redelivered(false) for (MessageId:
> >> > ID:bbaa590d-e975-11ea-9ad0-6c4b902fc0e1 on ExchangeId:
> >> > ID-Kal030841-1598650245838-0-1) caught: null
> >> > [ctiveMQ-client-global-threads)] TransactionErrorHandler        WARN
> >> > Transaction rollback (0x5cd1283) redelivered(false) for (MessageId:
> >> > ID:bbaa590d-e975-11ea-9ad0-6c4b902fc0e1 on ExchangeId:
> >> > ID-Kal030841-1598650245838-0-1) caught: null
> >> > [ctiveMQ-client-global-threads)] TransactionErrorHandler        WARN
> >> > Transaction rollback (0x5cd1283) redelivered(false) for (MessageId:
> >> > ID:bbaa590d-e975-11ea-9ad0-6c4b902fc0e1 on ExchangeId:
> >> > ID-Kal030841-1598650245838-0-1) caught: null
> >> > [ctiveMQ-client-global-threads)] TransactionErrorHandler        ERROR
> >> > Failed delivery for (MessageId:
> >> > ID:bbaa590d-e975-11ea-9ad0-6c4b902fc0e1 on
> >> > ExchangeId: ID-Kal030841-1598650245838-0-1). Exhausted after delivery
> >> > attempt: 3 caught: java.lang.NullPointerException
> >> >
> >> > Message History (complete message history is disabled)
> >> >
> >> >
> >>
> ---------------------------------------------------------------------------------------------------------------------------------------
> >> > RouteId              ProcessorId          Processor
> >> >                                                 Elapsed (ms)
> >> > [route1            ] [route1            ]
> >> > [from[sjms://topic:topic:test?durableSubscriptionId=dmitr] [
> 1999]
> >> >                 ...
> >> > [route1            ] [transacted1       ] [transacted
> >> >                                               ] [         0]
> >> >
> >> > Stacktrace
> >> >
> >> > ----------------------------------------------------------------------
> >> > -----------------------------------------------------------------
> >> >
> >> > java.lang.NullPointerException: null
> >> >                 at
> >> > org.apache.camel.cdi.transaction.TransactionalJtaTransactionPolicy.has
> >> > ActiveTransaction(TransactionalJtaTransactionPolicy.java:105)
> >> > ~[camel-cdi-3.4.3.jar:3.4.3]
> >> >                 at
> >> > org.apache.camel.cdi.transaction.RequiredJtaTransactionPolicy.run(Requ
> >> > iredJtaTransactionPolicy.java:26)
> >> > ~[camel-cdi-3.4.3.jar:3.4.3]
> >> >                 at
> >> > org.apache.camel.jta.TransactionErrorHandler.doInTransactionTemplate(T
> >> > ransactionErrorHandler.java:193)
> >> > ~[camel-jta-3.4.3.jar:3.4.3]
> >> >                 at
> >> > org.apache.camel.jta.TransactionErrorHandler.processInTransaction(Tran
> >> > sactionErrorHandler.java:144)
> >> > ~[camel-jta-3.4.3.jar:3.4.3]
> >> >                 at
> >> > org.apache.camel.jta.TransactionErrorHandler.process(TransactionErrorH
> >> > andler.java:108)
> >> > ~[camel-jta-3.4.3.jar:3.4.3]
> >> >                 at
> >> > org.apache.camel.jta.TransactionErrorHandler.process(TransactionErrorH
> >> > andler.java:117)
> >> > ~[camel-jta-3.4.3.jar:3.4.3]
> >> >                 at
> >> > org.apache.camel.processor.errorhandler.RedeliveryErrorHandler$Redeliv
> >> > eryTask.redeliver(RedeliveryErrorHandler.java:766)
> >> > ~[camel-base-3.4.3.jar:3.4.3]
> >> >                 at
> >> > org.apache.camel.impl.engine.DefaultReactiveExecutor$Worker.schedule(D
> >> > efaultReactiveExecutor.java:148)
> >> > ~[camel-base-3.4.3.jar:3.4.3]
> >> >                 at
> >> > org.apache.camel.impl.engine.DefaultReactiveExecutor.scheduleMain(Defa
> >> > ultReactiveExecutor.java:60)
> >> > ~[camel-base-3.4.3.jar:3.4.3]
> >> >                 at
> >> > org.apache.camel.processor.Pipeline.process(Pipeline.java:147)
> >> > ~[camel-base-3.4.3.jar:3.4.3]
> >> >                 at
> >> > org.apache.camel.processor.CamelInternalProcessor.process(CamelInterna
> >> > lProcessor.java:286)
> >> > ~[camel-base-3.4.3.jar:3.4.3]
> >> >                 at
> >> > org.apache.camel.impl.engine.DefaultAsyncProcessorAwaitManager.process
> >> > (DefaultAsyncProcessorAwaitManager.java:83)
> >> > ~[camel-base-3.4.3.jar:3.4.3]
> >> >                 at
> >> > org.apache.camel.support.AsyncProcessorSupport.process(AsyncProcessorS
> >> > upport.java:40)
> >> > ~[camel-support-3.4.3.jar:3.4.3]
> >> >                 at
> >> > org.apache.camel.component.sjms.consumer.InOnlyMessageHandler.handleMe
> >> > ssage(InOnlyMessageHandler.java:52)
> >> > ~[camel-sjms-3.4.3.jar:3.4.3]
> >> >                 at
> >> > org.apache.camel.component.sjms.consumer.AbstractMessageHandler.onMess
> >> > age(AbstractMessageHandler.java:81)
> >> > ~[camel-sjms-3.4.3.jar:3.4.3]
> >> >                 at
> >> > org.apache.activemq.artemis.jms.client.JMSMessageListenerWrapper.onMes
> >> > sage(JMSMessageListenerWrapper.java:110)
> >> > ~[artemis-jms-client-2.14.0.jar:2.14.0]
> >> >                 at
> >> > org.apache.activemq.artemis.core.client.impl.ClientConsumerImpl.callOn
> >> > Message(ClientConsumerImpl.java:1030)
> >> > ~[artemis-core-client-2.14.0.jar:2.14.0]
> >> >
> >> > So, it looks like rollback is kicked off, but when I restart the
> >> > process message is gone from the JMS topic.
> >> >
> >> > Sample reproducer  (generated using
> >> > -DarchetypeArtifactId=camel-archetype-cdi as described here
> >> >
> https://urldefense.com/v3/__https://camel.apache.org/components/latest
> >> > /others/cdi.html__;!!LdWlNaMnLCM!OJ-X6YfRy0exjKJ8PNWy-d5aHbD6mgnBfTRZX
> >> > XKak6kEojLVTmcKwcF4puKY9NnrgwcA$  ) is here
> >> >
> https://urldefense.com/v3/__https://github.com/zeppelinux/CamelCDISjms
> >> > Test__;!!LdWlNaMnLCM!OJ-X6YfRy0exjKJ8PNWy-d5aHbD6mgnBfTRZXXKak6kEojLVT
> >> > mcKwcF4puKY9HBU5Opk$
> >> > Please  have a look.
> >> >
> >> > Cheers,
> >> > Dmitry
> >> >
> >>
> >
>

Re: CDI + SJMS + transacted

Posted by Zheng Feng <zf...@redhat.com>.
FYI, I just raised https://github.com/apache/camel/pull/4151 to backport
the fix of CAMEL-14918 to 3.4.x. Also I test the "transacted=true" which
the sjms consumer that the message will be sent to the DLQ after the error
handler is exhausted. Is this what you expected ?

On Wed, Sep 2, 2020 at 2:09 PM Zheng Feng <zf...@redhat.com> wrote:

> Yeah, TomEE could provide the "java:/TransactionManager" since it is a
> J2EE container. I wonder if you use the "transacted=true" option on the
> sjms consumer which will rollback the transaction if the router is failed.
>
>
> On Tue, Sep 1, 2020 at 4:35 AM Shultz, Dmitry <Dm...@kaltire.com>
> wrote:
>
>> Thanks for the reply Zheng.
>>
>> I'm running very similar code in the TomEE and It doesn't fail on NPE.
>> See similar behaviour though:
>>
>> [Thread-0 (ActiveMQ-client] WARN  o.a.c.jta.TransactionErrorHandler -
>> Transaction rollback (0x30730302) redelivered(false) for (MessageId:
>> ID:9fd77209-ebc6-11ea-955a-1ee7171b8787 on ExchangeId:
>> ID-Kal030841-1598904862181-0-2) caught: test
>>
>> And after process restart the message is gone.
>>
>> I can confirm that when I use infinite re-delivery (the error handler
>> never exhausted) the message stays in the durable topic as forever even
>> after restart. So, I'm not sure if my expectation are correct i.e. does it
>> supposed to stay in the topic after error handler redeliveries are
>> exhausted?
>>
>> Cheers,
>> Dmitry
>>
>>
>> -----Original Message-----
>> From: Zheng Feng [mailto:zfeng@redhat.com]
>> Sent: Sunday, August 30, 2020 8:58 AM
>> To: users@camel.apache.org
>> Subject: Re: CDI + SJMS + transacted
>>
>> Hi Dmitry,
>>
>> It seems that SJMS [1]  currently only supports the use of internal JMS
>> Transactions. There is no support for the Camel Transaction Processor or
>> the Java Transaction API (JTA). Also if you want to use the JTA transaction
>> provided by the camel-cdi, the TransactionManager should be available via
>> JNDI "java:/TransactionManager". Then you are running the camel in the
>> standalone environment, and the transaction manager should be provided by
>> the third party implementation, such as Narayana ( you can find the jta
>> standalone example here [2]). The NPE I think should be fixed by
>> CAMEL-14918 [3], and I will try to backport it to the 3.4.x
>>
>> Regards,
>> Zheng Feng
>>
>> [1]
>> https://urldefense.com/v3/__https://camel.apache.org/components/latest/sjms-component.html__;!!LdWlNaMnLCM!OJ-X6YfRy0exjKJ8PNWy-d5aHbD6mgnBfTRZXXKak6kEojLVTmcKwcF4puKY9P1BTwqO$
>> [2]
>> https://urldefense.com/v3/__https://github.com/jbosstm/quickstart/tree/master/jta-1_2-standalone__;!!LdWlNaMnLCM!OJ-X6YfRy0exjKJ8PNWy-d5aHbD6mgnBfTRZXXKak6kEojLVTmcKwcF4puKY9Py3UShj$
>> [3]
>>
>> https://urldefense.com/v3/__https://github.com/apache/camel/commit/4421b2bba294dd8828621684c7670f78d811ecd8*diff-773b20d331dac13fb17acfa0f58ac01f__;Iw!!LdWlNaMnLCM!OJ-X6YfRy0exjKJ8PNWy-d5aHbD6mgnBfTRZXXKak6kEojLVTmcKwcF4puKY9F_CLTBw$
>>
>> On Sat, Aug 29, 2020 at 5:50 AM Shultz, Dmitry <Dmitry_Shultz@kaltire.com
>> >
>> wrote:
>>
>> > Hi All,
>> >
>> > I'm probably doing something  wrong/stupid, but I can't get the sjms
>> > (recent Camel, but same true for 2.25.2) to leave failed messages in
>> > the JMS topic (AMQ Artemis) after exception.
>> > This is what logged:
>> >
>> > [ctiveMQ-client-global-threads)] TransactionErrorHandler        WARN
>> > Transaction rollback (0x5cd1283) redelivered(false) for (MessageId:
>> > ID:bbaa590d-e975-11ea-9ad0-6c4b902fc0e1 on ExchangeId:
>> > ID-Kal030841-1598650245838-0-1) caught: null
>> > [ctiveMQ-client-global-threads)] TransactionErrorHandler        WARN
>> > Transaction rollback (0x5cd1283) redelivered(false) for (MessageId:
>> > ID:bbaa590d-e975-11ea-9ad0-6c4b902fc0e1 on ExchangeId:
>> > ID-Kal030841-1598650245838-0-1) caught: null
>> > [ctiveMQ-client-global-threads)] TransactionErrorHandler        WARN
>> > Transaction rollback (0x5cd1283) redelivered(false) for (MessageId:
>> > ID:bbaa590d-e975-11ea-9ad0-6c4b902fc0e1 on ExchangeId:
>> > ID-Kal030841-1598650245838-0-1) caught: null
>> > [ctiveMQ-client-global-threads)] TransactionErrorHandler        ERROR
>> > Failed delivery for (MessageId:
>> > ID:bbaa590d-e975-11ea-9ad0-6c4b902fc0e1 on
>> > ExchangeId: ID-Kal030841-1598650245838-0-1). Exhausted after delivery
>> > attempt: 3 caught: java.lang.NullPointerException
>> >
>> > Message History (complete message history is disabled)
>> >
>> >
>> ---------------------------------------------------------------------------------------------------------------------------------------
>> > RouteId              ProcessorId          Processor
>> >                                                 Elapsed (ms)
>> > [route1            ] [route1            ]
>> > [from[sjms://topic:topic:test?durableSubscriptionId=dmitr] [      1999]
>> >                 ...
>> > [route1            ] [transacted1       ] [transacted
>> >                                               ] [         0]
>> >
>> > Stacktrace
>> >
>> > ----------------------------------------------------------------------
>> > -----------------------------------------------------------------
>> >
>> > java.lang.NullPointerException: null
>> >                 at
>> > org.apache.camel.cdi.transaction.TransactionalJtaTransactionPolicy.has
>> > ActiveTransaction(TransactionalJtaTransactionPolicy.java:105)
>> > ~[camel-cdi-3.4.3.jar:3.4.3]
>> >                 at
>> > org.apache.camel.cdi.transaction.RequiredJtaTransactionPolicy.run(Requ
>> > iredJtaTransactionPolicy.java:26)
>> > ~[camel-cdi-3.4.3.jar:3.4.3]
>> >                 at
>> > org.apache.camel.jta.TransactionErrorHandler.doInTransactionTemplate(T
>> > ransactionErrorHandler.java:193)
>> > ~[camel-jta-3.4.3.jar:3.4.3]
>> >                 at
>> > org.apache.camel.jta.TransactionErrorHandler.processInTransaction(Tran
>> > sactionErrorHandler.java:144)
>> > ~[camel-jta-3.4.3.jar:3.4.3]
>> >                 at
>> > org.apache.camel.jta.TransactionErrorHandler.process(TransactionErrorH
>> > andler.java:108)
>> > ~[camel-jta-3.4.3.jar:3.4.3]
>> >                 at
>> > org.apache.camel.jta.TransactionErrorHandler.process(TransactionErrorH
>> > andler.java:117)
>> > ~[camel-jta-3.4.3.jar:3.4.3]
>> >                 at
>> > org.apache.camel.processor.errorhandler.RedeliveryErrorHandler$Redeliv
>> > eryTask.redeliver(RedeliveryErrorHandler.java:766)
>> > ~[camel-base-3.4.3.jar:3.4.3]
>> >                 at
>> > org.apache.camel.impl.engine.DefaultReactiveExecutor$Worker.schedule(D
>> > efaultReactiveExecutor.java:148)
>> > ~[camel-base-3.4.3.jar:3.4.3]
>> >                 at
>> > org.apache.camel.impl.engine.DefaultReactiveExecutor.scheduleMain(Defa
>> > ultReactiveExecutor.java:60)
>> > ~[camel-base-3.4.3.jar:3.4.3]
>> >                 at
>> > org.apache.camel.processor.Pipeline.process(Pipeline.java:147)
>> > ~[camel-base-3.4.3.jar:3.4.3]
>> >                 at
>> > org.apache.camel.processor.CamelInternalProcessor.process(CamelInterna
>> > lProcessor.java:286)
>> > ~[camel-base-3.4.3.jar:3.4.3]
>> >                 at
>> > org.apache.camel.impl.engine.DefaultAsyncProcessorAwaitManager.process
>> > (DefaultAsyncProcessorAwaitManager.java:83)
>> > ~[camel-base-3.4.3.jar:3.4.3]
>> >                 at
>> > org.apache.camel.support.AsyncProcessorSupport.process(AsyncProcessorS
>> > upport.java:40)
>> > ~[camel-support-3.4.3.jar:3.4.3]
>> >                 at
>> > org.apache.camel.component.sjms.consumer.InOnlyMessageHandler.handleMe
>> > ssage(InOnlyMessageHandler.java:52)
>> > ~[camel-sjms-3.4.3.jar:3.4.3]
>> >                 at
>> > org.apache.camel.component.sjms.consumer.AbstractMessageHandler.onMess
>> > age(AbstractMessageHandler.java:81)
>> > ~[camel-sjms-3.4.3.jar:3.4.3]
>> >                 at
>> > org.apache.activemq.artemis.jms.client.JMSMessageListenerWrapper.onMes
>> > sage(JMSMessageListenerWrapper.java:110)
>> > ~[artemis-jms-client-2.14.0.jar:2.14.0]
>> >                 at
>> > org.apache.activemq.artemis.core.client.impl.ClientConsumerImpl.callOn
>> > Message(ClientConsumerImpl.java:1030)
>> > ~[artemis-core-client-2.14.0.jar:2.14.0]
>> >
>> > So, it looks like rollback is kicked off, but when I restart the
>> > process message is gone from the JMS topic.
>> >
>> > Sample reproducer  (generated using
>> > -DarchetypeArtifactId=camel-archetype-cdi as described here
>> > https://urldefense.com/v3/__https://camel.apache.org/components/latest
>> > /others/cdi.html__;!!LdWlNaMnLCM!OJ-X6YfRy0exjKJ8PNWy-d5aHbD6mgnBfTRZX
>> > XKak6kEojLVTmcKwcF4puKY9NnrgwcA$  ) is here
>> > https://urldefense.com/v3/__https://github.com/zeppelinux/CamelCDISjms
>> > Test__;!!LdWlNaMnLCM!OJ-X6YfRy0exjKJ8PNWy-d5aHbD6mgnBfTRZXXKak6kEojLVT
>> > mcKwcF4puKY9HBU5Opk$
>> > Please  have a look.
>> >
>> > Cheers,
>> > Dmitry
>> >
>>
>

Re: CDI + SJMS + transacted

Posted by Romain Manni-Bucau <rm...@gmail.com>.
Works too, i was  thinking about something similar but programmatic but at
the end it does the same (veto the default impl and replace it by a custom
one which injects the txmgr), your solution is even less verbose ;).

Romain Manni-Bucau
@rmannibucau <https://twitter.com/rmannibucau> |  Blog
<https://rmannibucau.metawerx.net/> | Old Blog
<http://rmannibucau.wordpress.com> | Github <https://github.com/rmannibucau> |
LinkedIn <https://www.linkedin.com/in/rmannibucau> | Book
<https://www.packtpub.com/application-development/java-ee-8-high-performance>


Le jeu. 10 sept. 2020 à 02:04, Shultz, Dmitry <Dm...@kaltire.com> a
écrit :

> I was not sure what to do in the extension, so I just created this class
> and made it part of the service codebase:
>
>
>
> @Specializes
>
> public class PatchedRequiredJtaTransactionPolicy extends
> RequiredJtaTransactionPolicy {
>
>
>
>     @Resource
>
>     TransactionManager txMgr;
>
>
>
>     @Override
>
>     public void run(final Runnable runnable) throws Throwable {
>
>         transactionManager = txMgr;
>
>         runWithTransaction(runnable, !hasActiveTransaction());
>
>     }
>
> }
>
>
>
> And it all (Camel 3.5.0, SJMS transactions, Hibernate transactions, …)
> works now in TomEE 7.0.6 J Thanks  Romain!
>
> If there is anything I can do to make it ‘nicer’ (or maybe I’m missing
> anything) –any suggestion will be appreciated J.
>
>
>
> Cheers,
>
> Dmitry
>
>
>
>
>
> *From:* Romain Manni-Bucau [mailto:rmannibucau@gmail.com]
> *Sent:* Wednesday, September 9, 2020 10:55 AM
> *To:* Shultz, Dmitry <Dm...@kaltire.com>
> *Cc:* users@camel.apache.org
> *Subject:* Re: CDI + SJMS + transacted
>
>
>
> As mentionned previously Camel needs to be patched.
>
> The easiest is a cdi extension replacing RequiredJtaTransactionPolicy by
> a custom impl (likely using @Resource TransactionManager txMgr instead of
> the lookup, should be trivial I think).
>
>
>
> Side note: this logic likely needs to move in a camel-ee module cause cdi
> module seems inaccurate (in terms of dependencies and usage and it already
> created troubles by the past even if the openjpa code could mitigate it).
>
>
> Romain Manni-Bucau
> @rmannibucau [twitter.com]
> <https://urldefense.com/v3/__https:/twitter.com/rmannibucau__;!!LdWlNaMnLCM!KicObP30ibyFUuNzaC66jwhfJNxEBH78hcl9h6oK-0EvXz_jf8WmRe1tmDF0T0GI2jro$>
> |  Blog [rmannibucau.metawerx.net]
> <https://urldefense.com/v3/__https:/rmannibucau.metawerx.net/__;!!LdWlNaMnLCM!KicObP30ibyFUuNzaC66jwhfJNxEBH78hcl9h6oK-0EvXz_jf8WmRe1tmDF0T_V5imJ7$> |
> Old Blog [rmannibucau.wordpress.com]
> <https://urldefense.com/v3/__http:/rmannibucau.wordpress.com__;!!LdWlNaMnLCM!KicObP30ibyFUuNzaC66jwhfJNxEBH78hcl9h6oK-0EvXz_jf8WmRe1tmDF0T_p1aJXo$>
> | Github [github.com]
> <https://urldefense.com/v3/__https:/github.com/rmannibucau__;!!LdWlNaMnLCM!KicObP30ibyFUuNzaC66jwhfJNxEBH78hcl9h6oK-0EvXz_jf8WmRe1tmDF0T0NqDxib$> |
> LinkedIn [linkedin.com]
> <https://urldefense.com/v3/__https:/www.linkedin.com/in/rmannibucau__;!!LdWlNaMnLCM!KicObP30ibyFUuNzaC66jwhfJNxEBH78hcl9h6oK-0EvXz_jf8WmRe1tmDF0TzdL7iSF$> |
> Book [packtpub.com]
> <https://urldefense.com/v3/__https:/www.packtpub.com/application-development/java-ee-8-high-performance__;!!LdWlNaMnLCM!KicObP30ibyFUuNzaC66jwhfJNxEBH78hcl9h6oK-0EvXz_jf8WmRe1tmDF0T4_pbDb7$>
>
>
>
>
>
> Le mer. 9 sept. 2020 à 19:42, Shultz, Dmitry <Dm...@kaltire.com>
> a écrit :
>
> Romain,
>
>
>
> My current Hibernate is 4.2.21.Final,  here are the different outcomes I
> see after I applied your suggestion to the persistence.xml:
>
>
>
> 1.       name="hibernate.transaction.jta.platform"
> value="org.apache.openejb.hibernate.OpenEJBJtaPlatform2"
>
>
>
> getting (as expected) java.lang.ClassNotFoundException:
> org.hibernate.engine.transaction.jta.platform.internal.AbstractJtaPlatform
>
>
>
> 2.       name="hibernate.transaction.jta.platform"
> value="org.apache.openejb.hibernate.OpenEJBJtaPlatform"
>
> getting same WARN  o.a.c.c.t.TransactionalJtaTransactionPolicy - Could not
> find the transaction manager through java:/TransactionManager when Camel
> boots
>
>
>
> 3.       name="hibernate.transaction.manager_lookup_class"
> value="org.apache.openejb.hibernate.TransactionManagerLookup"
>
> getting same WARN  o.a.c.c.t.TransactionalJtaTransactionPolicy - Could not
> find the transaction manager through java:/TransactionManager when Camel
> boots
>
>
>
> In  2 & 3 the persistence unit starts successfully, it’s only when Camel
> tries to find the TransactionManager it logs the warning.
>
>
>
> I tried to upgrade Hibernate to 5.4.20.Final but it doesn’t seem to be
> compatible with my current TomEE 7.0.6  and I can’t easily update it at the
> moment L
>
>
>
>                 Caused by: java.lang.ClassNotFoundException:
> org.hibernate.ejb.HibernatePersistence
>
>                                 at
> org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1364)
>
>                                 at
> org.apache.tomee.catalina.TomEEWebappClassLoader.loadClass(TomEEWebappClassLoader.java:208)
>
>                                 at
> org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1185)
>
>                                 at
> org.apache.openejb.assembler.classic.EntityManagerFactoryCallable.call(EntityManagerFactoryCallable.java:84)
>
>                                 at
> org.apache.openejb.assembler.classic.ReloadableEntityManagerFactory.createDelegate(ReloadableEntityManagerFactory.java:134)
>
>
>
> Is there anything else I can try?
>
>
>
> Cheers,
>
> Dmitry
>
>
>
>
>
> *From:* Romain Manni-Bucau [mailto:rmannibucau@gmail.com]
> *Sent:* Wednesday, September 9, 2020 12:56 AM
> *To:* users@camel.apache.org
> *Cc:* Shultz, Dmitry <Dm...@kaltire.com>
> *Subject:* Re: CDI + SJMS + transacted
>
>
>
> In hibernate configuration, you can try to force the transaction manager
> lokup
> hibernate.transaction.jta.platform=org.apache.openejb.hibernate.OpenEJBJtaPlatform2 (if
> you use older versions with the older hibernate key just drop the "2" at
> the end of the platform and if you use a very old hibernate version
> (manager_lookup_class), then use
> org.apache.openejb.hibernate.TransactionManagerLookup)
>
>
> Romain Manni-Bucau
> @rmannibucau [twitter.com]
> <https://urldefense.com/v3/__https:/twitter.com/rmannibucau__;!!LdWlNaMnLCM!L4bACvX05-Lb8u2ekiHyS3J3BxvhaVb4D1pnwM4ItphCC4flnrEsTsv-xjwZfoi1Cx-a$>
> |  Blog [rmannibucau.metawerx.net]
> <https://urldefense.com/v3/__https:/rmannibucau.metawerx.net/__;!!LdWlNaMnLCM!L4bACvX05-Lb8u2ekiHyS3J3BxvhaVb4D1pnwM4ItphCC4flnrEsTsv-xjwZfsV0FRfY$> |
> Old Blog [rmannibucau.wordpress.com]
> <https://urldefense.com/v3/__http:/rmannibucau.wordpress.com__;!!LdWlNaMnLCM!L4bACvX05-Lb8u2ekiHyS3J3BxvhaVb4D1pnwM4ItphCC4flnrEsTsv-xjwZfvdkhBJC$>
> | Github [github.com]
> <https://urldefense.com/v3/__https:/github.com/rmannibucau__;!!LdWlNaMnLCM!L4bACvX05-Lb8u2ekiHyS3J3BxvhaVb4D1pnwM4ItphCC4flnrEsTsv-xjwZflUkiucl$> |
> LinkedIn [linkedin.com]
> <https://urldefense.com/v3/__https:/www.linkedin.com/in/rmannibucau__;!!LdWlNaMnLCM!L4bACvX05-Lb8u2ekiHyS3J3BxvhaVb4D1pnwM4ItphCC4flnrEsTsv-xjwZfiS4xUan$> |
> Book [packtpub.com]
> <https://urldefense.com/v3/__https:/www.packtpub.com/application-development/java-ee-8-high-performance__;!!LdWlNaMnLCM!L4bACvX05-Lb8u2ekiHyS3J3BxvhaVb4D1pnwM4ItphCC4flnrEsTsv-xjwZfoOPIGUi$>
>
>
>
>
>
> Le mer. 9 sept. 2020 à 09:42, Zheng Feng <zf...@redhat.com> a écrit :
>
> Hi Dmitry,
>
> It seems that the TransactionManager can not be accessed via
> "java:/TransactionManager" and I am not an expert of TomEE also I am not
> sure if there is a way to set the transaction manager jndi name in the
> configuration file ?
>
> Regards,
> Zheng Feng
>
> On Wed, Sep 9, 2020 at 3:18 AM Shultz, Dmitry <Dm...@kaltire.com>
> wrote:
>
> > Zheng,
> >
> >
> >
> > I’m still having problem and it seems to behave differently running on
> the
> > same TomEE version (7.0.6) but different Camel 3+ versions.
> >
> >
> >
> > To reproduce  I corrupted the query (handled by Deltaspike Data Module
> > repository).
> >
> >
> >
> > When it runs (fails) with Camel 3.4.5 it behaves as expected the first
> > time, but when it tries to redeliver the same JMS message it complains
> with
> > ‘Cannot join transaction: do not override
> > hibernate.transaction.factory_class’. Here is the full stack for
> redelivery:
> >
> >
> >
> > 2020-09-08 11:07:56.428 [Thread-0 (ActiveMQ-client] WARN
> > c.k.m.c.DeadLetterChannelBuilderProducer - redelivery attempt 1 to
> > direct://process
> >
> > 2020-09-08 11:07:56.440 [Thread-0 (ActiveMQ-client] WARN
> > o.h.ejb.AbstractEntityManagerImpl - HHH000326: Cannot join transaction:
> do
> > not override hibernate.transaction.factory_class
> >
> > 2020-09-08 11:07:56.442 [Thread-0 (ActiveMQ-client] ERROR
> > c.k.m.c.DeadLetterChannelBuilderProducer - processing failed with:
> >
> > javax.persistence.TransactionRequiredException: No active JTA transaction
> > on joinTransaction call
> >
> >                 at
> >
> org.hibernate.ejb.AbstractEntityManagerImpl.joinTransaction(AbstractEntityManagerImpl.java:1233)
> >
> >                 at
> >
> org.hibernate.ejb.AbstractEntityManagerImpl.joinTransaction(AbstractEntityManagerImpl.java:1183)
> >
> >                 at
> >
> org.apache.deltaspike.jpa.impl.transaction.BeanManagedUserTransactionStrategy.beforeProceed(BeanManagedUserTransactionStrategy.java:171)
> >
> >                 at
> >
> org.apache.deltaspike.jpa.impl.transaction.EnvironmentAwareTransactionStrategy.beforeProceed(EnvironmentAwareTransactionStrategy.java:109)
> >
> >                 at
> >
> org.apache.deltaspike.jpa.impl.transaction.ResourceLocalTransactionStrategy.execute(ResourceLocalTransactionStrategy.java:127)
> >
> >                 at
> >
> org.apache.deltaspike.jpa.impl.transaction.TransactionalInterceptor.executeInTransaction(TransactionalInterceptor.java:57)
> >
> >                 at sun.reflect.NativeMethodAccessorImpl.invoke0(Native
> > Method)
> >
> >                 at
> >
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
> >
> >                 at
> >
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> >
> >                 at java.lang.reflect.Method.invoke(Method.java:498)
> >
> >                 at
> >
> org.apache.webbeans.component.InterceptorBean.intercept(InterceptorBean.java:136)
> >
> >                 at
> >
> org.apache.webbeans.intercept.InterceptorInvocationContext.proceed(InterceptorInvocationContext.java:63)
> >
> >                 at
> >
> org.apache.webbeans.intercept.DefaultInterceptorHandler.invoke(DefaultInterceptorHandler.java:139)
> >
> >                 at
> >
> com.kaltire.mix.tirelodge.camel.beans.EventProcessor$$OwbInterceptProxy0.process(com/kaltire/mix/tirelodge/camel/beans/EventProcessor.java)
> >
> >                 at sun.reflect.NativeMethodAccessorImpl.invoke0(Native
> > Method)
> >
> >                 at
> >
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
> >
> >                 at
> >
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> >
> >                 at java.lang.reflect.Method.invoke(Method.java:498)
> >
> >                 at
> >
> org.apache.camel.support.ObjectHelper.invokeMethodSafe(ObjectHelper.java:209)
> >
> >                 at
> > org.apache.camel.component.bean.MethodInfo.invoke(MethodInfo.java:421)
> >
> >                 at
> >
> org.apache.camel.component.bean.MethodInfo$1.doProceed(MethodInfo.java:242)
> >
> >                 at
> > org.apache.camel.component.bean.MethodInfo$1.proceed(MethodInfo.java:213)
> >
> >                 at
> >
> org.apache.camel.component.bean.AbstractBeanProcessor.process(AbstractBeanProcessor.java:154)
> >
> >                 at
> >
> org.apache.camel.component.bean.BeanProcessor.process(BeanProcessor.java:56)
> >
> >                 at
> >
> org.apache.camel.management.DefaultInstrumentationProcessor.process(DefaultInstrumentationProcessor.java:91)
> >
> >                 at
> >
> org.apache.camel.processor.errorhandler.RedeliveryErrorHandler$RedeliveryTask.redeliver(RedeliveryErrorHandler.java:766)
> >
> >                 at
> >
> org.apache.camel.impl.engine.DefaultReactiveExecutor$Worker.schedule(DefaultReactiveExecutor.java:148)
> >
> >                 at
> >
> org.apache.camel.impl.engine.DefaultReactiveExecutor.scheduleSync(DefaultReactiveExecutor.java:65)
> >
> >                 at
> >
> org.apache.camel.processor.errorhandler.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:175)
> >
> >                 at
> >
> org.apache.camel.impl.engine.DefaultAsyncProcessorAwaitManager.process(DefaultAsyncProcessorAwaitManager.java:83)
> >
> >                 at
> >
> org.apache.camel.processor.errorhandler.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:158)
> >
> >                 at
> >
> org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:260)
> >
> >                 at
> >
> org.apache.camel.processor.ChoiceProcessor.process(ChoiceProcessor.java:115)
> >
> >                 at
> >
> org.apache.camel.impl.engine.DefaultAsyncProcessorAwaitManager.process(DefaultAsyncProcessorAwaitManager.java:83)
> >
> >                 at
> >
> org.apache.camel.support.AsyncProcessorSupport.process(AsyncProcessorSupport.java:40)
> >
> >                 at
> >
> org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:260)
> >
> >                 at
> >
> org.apache.camel.impl.engine.DefaultAsyncProcessorAwaitManager.process(DefaultAsyncProcessorAwaitManager.java:83)
> >
> >                 at
> >
> org.apache.camel.support.AsyncProcessorSupport.process(AsyncProcessorSupport.java:40)
> >
> >                 at
> >
> org.apache.camel.jta.TransactionErrorHandler.processByErrorHandler(TransactionErrorHandler.java:242)
> >
> >                 at
> >
> org.apache.camel.jta.TransactionErrorHandler$1.run(TransactionErrorHandler.java:203)
> >
> >                 at
> >
> org.apache.camel.cdi.transaction.TransactionalJtaTransactionPolicy.runWithTransaction(TransactionalJtaTransactionPolicy.java:51)
> >
> >                 at
> >
> org.apache.camel.cdi.transaction.RequiredJtaTransactionPolicy.run(RequiredJtaTransactionPolicy.java:26)
> >
> >                 at
> >
> org.apache.camel.jta.TransactionErrorHandler.doInTransactionTemplate(TransactionErrorHandler.java:193)
> >
> >                 at
> >
> org.apache.camel.jta.TransactionErrorHandler.processInTransaction(TransactionErrorHandler.java:144)
> >
> >                 at
> >
> org.apache.camel.jta.TransactionErrorHandler.process(TransactionErrorHandler.java:108)
> >
> >                 at
> >
> org.apache.camel.jta.TransactionErrorHandler.process(TransactionErrorHandler.java:117)
> >
> >                 at
> >
> org.apache.camel.processor.errorhandler.RedeliveryErrorHandler$SimpleTask.run(RedeliveryErrorHandler.java:395)
> >
> >                 at
> >
> org.apache.camel.impl.engine.DefaultReactiveExecutor$Worker.schedule(DefaultReactiveExecutor.java:148)
> >
> >                 at
> >
> org.apache.camel.impl.engine.DefaultReactiveExecutor.scheduleSync(DefaultReactiveExecutor.java:65)
> >
> >                 at
> >
> org.apache.camel.processor.errorhandler.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:175)
> >
> >                 at
> >
> org.apache.camel.impl.engine.DefaultAsyncProcessorAwaitManager.process(DefaultAsyncProcessorAwaitManager.java:83)
> >
> >                 at
> >
> org.apache.camel.processor.errorhandler.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:158)
> >
> >                 at
> >
> org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:260)
> >
> >                 at
> > org.apache.camel.processor.Pipeline$PipelineTask.run(Pipeline.java:90)
> >
> >                 at
> >
> org.apache.camel.impl.engine.DefaultReactiveExecutor$Worker.schedule(DefaultReactiveExecutor.java:148)
> >
> >                 at
> >
> org.apache.camel.impl.engine.DefaultReactiveExecutor.scheduleSync(DefaultReactiveExecutor.java:65)
> >
> >                 at
> > org.apache.camel.processor.Pipeline.process(Pipeline.java:145)
> >
> >                 at
> >
> org.apache.camel.impl.engine.DefaultAsyncProcessorAwaitManager.process(DefaultAsyncProcessorAwaitManager.java:83)
> >
> >                 at
> >
> org.apache.camel.support.AsyncProcessorSupport.process(AsyncProcessorSupport.java:40)
> >
> >                 at
> >
> org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:260)
> >
> >                 at
> >
> org.apache.camel.component.direct.DirectProducer.process(DirectProducer.java:66)
> >
> >                 at
> > org.apache.camel.processor.SendProcessor.process(SendProcessor.java:168)
> >
> >                 at
> >
> org.apache.camel.impl.engine.DefaultAsyncProcessorAwaitManager.process(DefaultAsyncProcessorAwaitManager.java:83)
> >
> >                 at
> >
> org.apache.camel.support.AsyncProcessorSupport.process(AsyncProcessorSupport.java:40)
> >
> >                 at
> >
> org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:260)
> >
> >                 at
> > org.apache.camel.processor.Pipeline$PipelineTask.run(Pipeline.java:90)
> >
> >                 at
> >
> org.apache.camel.impl.engine.DefaultReactiveExecutor$Worker.schedule(DefaultReactiveExecutor.java:148)
> >
> >                 at
> >
> org.apache.camel.impl.engine.DefaultReactiveExecutor.scheduleSync(DefaultReactiveExecutor.java:65)
> >
> >                 at
> > org.apache.camel.processor.Pipeline.process(Pipeline.java:145)
> >
> >                 at
> >
> org.apache.camel.impl.engine.DefaultAsyncProcessorAwaitManager.process(DefaultAsyncProcessorAwaitManager.java:83)
> >
> >                 at
> >
> org.apache.camel.support.AsyncProcessorSupport.process(AsyncProcessorSupport.java:40)
> >
> >                 at
> >
> org.apache.camel.jta.TransactionErrorHandler.processByErrorHandler(TransactionErrorHandler.java:242)
> >
> >                 at
> >
> org.apache.camel.jta.TransactionErrorHandler$1.run(TransactionErrorHandler.java:203)
> >
> >                 at
> >
> org.apache.camel.cdi.transaction.TransactionalJtaTransactionPolicy.runWithTransaction(TransactionalJtaTransactionPolicy.java:51)
> >
> >                 at
> >
> org.apache.camel.cdi.transaction.RequiredJtaTransactionPolicy.run(RequiredJtaTransactionPolicy.java:26)
> >
> >                 at
> >
> org.apache.camel.jta.TransactionErrorHandler.doInTransactionTemplate(TransactionErrorHandler.java:193)
> >
> >                 at
> >
> org.apache.camel.jta.TransactionErrorHandler.processInTransaction(TransactionErrorHandler.java:144)
> >
> >                 at
> >
> org.apache.camel.jta.TransactionErrorHandler.process(TransactionErrorHandler.java:108)
> >
> >                 at
> >
> org.apache.camel.jta.TransactionErrorHandler.process(TransactionErrorHandler.java:117)
> >
> >                 at
> >
> org.apache.camel.processor.errorhandler.RedeliveryErrorHandler$SimpleTask.run(RedeliveryErrorHandler.java:395)
> >
> >                 at
> >
> org.apache.camel.impl.engine.DefaultReactiveExecutor$Worker.schedule(DefaultReactiveExecutor.java:148)
> >
> >                 at
> >
> org.apache.camel.impl.engine.DefaultReactiveExecutor.scheduleMain(DefaultReactiveExecutor.java:60)
> >
> >                 at
> > org.apache.camel.processor.Pipeline.process(Pipeline.java:147)
> >
> >                 at
> >
> org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:286)
> >
> >                 at
> >
> org.apache.camel.impl.engine.DefaultAsyncProcessorAwaitManager.process(DefaultAsyncProcessorAwaitManager.java:83)
> >
> >                 at
> >
> org.apache.camel.support.AsyncProcessorSupport.process(AsyncProcessorSupport.java:40)
> >
> >                 at
> >
> org.apache.camel.component.sjms.consumer.InOnlyMessageHandler.handleMessage(InOnlyMessageHandler.java:52)
> >
> >                 at
> >
> org.apache.camel.component.sjms.consumer.AbstractMessageHandler.onMessage(AbstractMessageHandler.java:81)
> >
> >                 at
> >
> org.apache.activemq.artemis.jms.client.JMSMessageListenerWrapper.onMessage(JMSMessageListenerWrapper.java:110)
> >
> >                 at
> >
> org.apache.activemq.artemis.core.client.impl.ClientConsumerImpl.callOnMessage(ClientConsumerImpl.java:1030)
> >
> >                 at
> >
> org.apache.activemq.artemis.core.client.impl.ClientConsumerImpl.access$400(ClientConsumerImpl.java:49)
> >
> >                 at
> >
> org.apache.activemq.artemis.core.client.impl.ClientConsumerImpl$Runner.run(ClientConsumerImpl.java:1153)
> >
> >                 at
> >
> org.apache.activemq.artemis.utils.actors.OrderedExecutor.doTask(OrderedExecutor.java:42)
> >
> >                 at
> >
> org.apache.activemq.artemis.utils.actors.OrderedExecutor.doTask(OrderedExecutor.java:31)
> >
> >                 at
> >
> org.apache.activemq.artemis.utils.actors.ProcessorBase.executePendingTasks(ProcessorBase.java:65)
> >
> >                 at
> >
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
> >
> >                 at
> >
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
> >
> >                 at
> >
> org.apache.activemq.artemis.utils.ActiveMQThreadFactory$1.run(ActiveMQThreadFactory.java:118)
> >
> >                 Suppressed: javax.persistence.PersistenceException:
> > org.hibernate.exception.SQLGrammarException: could not execute statement
> >
> >                                 at
> >
> org.hibernate.ejb.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1387)
> >
> >                                 at
> >
> org.hibernate.ejb.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1310)
> >
> >                                 at
> >
> org.hibernate.ejb.AbstractEntityManagerImpl.throwPersistenceException(AbstractEntityManagerImpl.java:1397)
> >
> >                                 at
> >
> org.hibernate.ejb.AbstractQueryImpl.executeUpdate(AbstractQueryImpl.java:111)
> >
> >                                 at
> >
> org.apache.deltaspike.data.impl.builder.result.QueryProcessorFactory$ExecuteUpdateQueryProcessor.executeQuery(QueryProcessorFactory.java:192)
> >
> >                                 at
> >
> org.apache.deltaspike.data.impl.handler.CdiQueryInvocationContext.executeQuery(CdiQueryInvocationContext.java:253)
> >
> >                                 at
> >
> org.apache.deltaspike.data.impl.builder.AnnotatedQueryBuilder.execute(AnnotatedQueryBuilder.java:51)
> >
> >                                 at
> >
> org.apache.deltaspike.data.impl.builder.QueryBuilder.executeQuery(QueryBuilder.java:57)
> >
> >                                 at
> >
> org.apache.deltaspike.data.impl.builder.AnnotatedQueryBuilder$$OwbNormalScopeProxy0.executeQuery(org/apache/deltaspike/data/impl/builder/AnnotatedQueryBuilder.java)
> >
> >                                 at
> >
> org.apache.deltaspike.data.impl.tx.TransactionalQueryRunner$1.proceed(TransactionalQueryRunner.java:73)
> >
> >                                 at
> >
> org.apache.deltaspike.jpa.impl.transaction.ResourceLocalTransactionStrategy.execute(ResourceLocalTransactionStrategy.java:130)
> >
> >                                 at
> >
> org.apache.deltaspike.data.impl.tx.TransactionalQueryRunner.executeTransactional(TransactionalQueryRunner.java:68)
> >
> >                                 at
> >
> org.apache.deltaspike.data.impl.tx.TransactionalQueryRunner.executeQuery(TransactionalQueryRunner.java:50)
> >
> >                                 at
> >
> org.apache.deltaspike.data.impl.tx.TransactionalQueryRunner$$OwbNormalScopeProxy0.executeQuery(org/apache/deltaspike/data/impl/tx/TransactionalQueryRunner.java)
> >
> >                                 at
> >
> org.apache.deltaspike.data.impl.handler.QueryHandler.process(QueryHandler.java:151)
> >
> >                                 at
> >
> org.apache.deltaspike.data.impl.handler.QueryHandler$1.proceed(QueryHandler.java:119)
> >
> >                                 at
> >
> org.apache.deltaspike.jpa.impl.transaction.ResourceLocalTransactionStrategy.execute(ResourceLocalTransactionStrategy.java:130)
> >
> >                                 at
> >
> org.apache.deltaspike.data.impl.handler.QueryHandler.invoke(QueryHandler.java:111)
> >
> >                                 at
> >
> org.apache.deltaspike.data.impl.handler.QueryHandler$$OwbNormalScopeProxy0.invoke(org/apache/deltaspike/data/impl/handler/QueryHandler.java)
> >
> >                                 at
> >
> org.apache.deltaspike.proxy.spi.invocation.DeltaSpikeProxyInvocationHandler.proceed(DeltaSpikeProxyInvocationHandler.java:97)
> >
> >                                 at
> >
> org.apache.deltaspike.proxy.spi.invocation.DeltaSpikeProxyInvocationContext.proceed(DeltaSpikeProxyInvocationContext.java:101)
> >
> >                                 at
> >
> org.apache.deltaspike.jpa.impl.transaction.ResourceLocalTransactionStrategy.execute(ResourceLocalTransactionStrategy.java:130)
> >
> >                                 at
> >
> org.apache.deltaspike.jpa.impl.transaction.TransactionalInterceptor.executeInTransaction(TransactionalInterceptor.java:57)
> >
> >                                 at
> > sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> >
> >                                 at
> >
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
> >
> >                                 at
> >
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> >
> >                                 at
> > java.lang.reflect.Method.invoke(Method.java:498)
> >
> >                                 at
> >
> org.apache.webbeans.component.InterceptorBean.intercept(InterceptorBean.java:136)
> >
> >                                 at
> >
> org.apache.deltaspike.proxy.spi.invocation.DeltaSpikeProxyInvocationContext.proceed(DeltaSpikeProxyInvocationContext.java:80)
> >
> >                                 at
> >
> org.apache.deltaspike.proxy.spi.invocation.DeltaSpikeProxyInvocationHandler.invoke(DeltaSpikeProxyInvocationHandler.java:63)
> >
> >                                 at
> >
> org.apache.deltaspike.proxy.spi.invocation.DeltaSpikeProxyInvocationHandler$$OwbNormalScopeProxy0.invoke(org/apache/deltaspike/proxy/spi/invocation/DeltaSpikeProxyInvocationHandler.java)
> >
> >                                 at
> >
> com.kaltire.mix.tirelodge.dao.StorageRecordRepository$$DSPartialBeanProxy.updateStorageRecord(Unknown
> > Source)
> >
> >                                 at
> >
> com.kaltire.mix.tirelodge.camel.beans.EventProcessor.process(EventProcessor.java:96)
> >
> >                                 at
> > sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> >
> >                                 at
> >
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
> >
> >                                 at
> >
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> >
> >                                 at
> > java.lang.reflect.Method.invoke(Method.java:498)
> >
> >                                 at
> >
> org.apache.webbeans.intercept.AbstractInvocationContext.directProceed(AbstractInvocationContext.java:113)
> >
> >                                 at
> >
> org.apache.webbeans.intercept.AbstractInvocationContext.proceed(AbstractInvocationContext.java:106)
> >
> >                                 at
> >
> org.apache.webbeans.intercept.InterceptorInvocationContext.proceed(InterceptorInvocationContext.java:67)
> >
> >                                 at
> >
> org.apache.deltaspike.jpa.impl.transaction.ResourceLocalTransactionStrategy.execute(ResourceLocalTransactionStrategy.java:130)
> >
> >                                 at
> >
> org.apache.deltaspike.jpa.impl.transaction.TransactionalInterceptor.executeInTransaction(TransactionalInterceptor.java:57)
> >
> >                                 at
> > sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> >
> >                                 at
> >
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
> >
> >                                 at
> >
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> >
> >                                 at
> > java.lang.reflect.Method.invoke(Method.java:498)
> >
> >                                 at
> >
> org.apache.webbeans.component.InterceptorBean.intercept(InterceptorBean.java:136)
> >
> >                                 at
> >
> org.apache.webbeans.intercept.InterceptorInvocationContext.proceed(InterceptorInvocationContext.java:63)
> >
> >                                 at
> >
> org.apache.webbeans.intercept.DefaultInterceptorHandler.invoke(DefaultInterceptorHandler.java:139)
> >
> >                                 at
> >
> com.kaltire.mix.tirelodge.camel.beans.EventProcessor$$OwbInterceptProxy0.process(com/kaltire/mix/tirelodge/camel/beans/EventProcessor.java)
> >
> >                                 at
> > sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> >
> >                                 at
> >
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
> >
> >                                 at
> >
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> >
> >                                 at
> > java.lang.reflect.Method.invoke(Method.java:498)
> >
> >                                 at
> >
> org.apache.camel.support.ObjectHelper.invokeMethodSafe(ObjectHelper.java:209)
> >
> >                                 at
> > org.apache.camel.component.bean.MethodInfo.invoke(MethodInfo.java:421)
> >
> >                                 at
> >
> org.apache.camel.component.bean.MethodInfo$1.doProceed(MethodInfo.java:242)
> >
> >                                 at
> > org.apache.camel.component.bean.MethodInfo$1.proceed(MethodInfo.java:213)
> >
> >                                 at
> >
> org.apache.camel.component.bean.AbstractBeanProcessor.process(AbstractBeanProcessor.java:154)
> >
> >                                 at
> >
> org.apache.camel.component.bean.BeanProcessor.process(BeanProcessor.java:56)
> >
> >                                 at
> >
> org.apache.camel.management.DefaultInstrumentationProcessor.process(DefaultInstrumentationProcessor.java:91)
> >
> >                                 at
> >
> org.apache.camel.processor.errorhandler.RedeliveryErrorHandler$RedeliveryTask.doRun(RedeliveryErrorHandler.java:702)
> >
> >                                 at
> >
> org.apache.camel.processor.errorhandler.RedeliveryErrorHandler$RedeliveryTask.run(RedeliveryErrorHandler.java:616)
> >
> >                                 ... 72 common frames omitted
> >
> >                 Caused by: org.hibernate.exception.SQLGrammarException:
> > could not execute statement
> >
> >                                 at
> >
> org.hibernate.exception.internal.SQLExceptionTypeDelegate.convert(SQLExceptionTypeDelegate.java:82)
> >
> >                                 at
> >
> org.hibernate.exception.internal.StandardSQLExceptionConverter.convert(StandardSQLExceptionConverter.java:49)
> >
> >                                 at
> >
> org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:124)
> >
> >                                 at
> >
> org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:109)
> >
> >                                 at
> >
> org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.executeUpdate(ResultSetReturnImpl.java:189)
> >
> >                                 at
> >
> org.hibernate.engine.query.spi.NativeSQLQueryPlan.performExecuteUpdate(NativeSQLQueryPlan.java:204)
> >
> >                                 at
> >
> org.hibernate.internal.SessionImpl.executeNativeUpdate(SessionImpl.java:1238)
> >
> >                                 at
> > org.hibernate.internal.SQLQueryImpl.executeUpdate(SQLQueryImpl.java:401)
> >
> >                                 at
> > org.hibernate.ejb.QueryImpl.internalExecuteUpdate(QueryImpl.java:198)
> >
> >                                 at
> >
> org.hibernate.ejb.AbstractQueryImpl.executeUpdate(AbstractQueryImpl.java:102)
> >
> >                                 ... 131 common frames omitted
> >
> >                 Caused by: java.sql.SQLSyntaxErrorException: Table
> > 'KTDN_TM.badTable doesn't exist
> >
> >                                 at
> >
> com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:120)
> >
> >                                 at
> >
> com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:97)
> >
> >                                 at
> >
> com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:122)
> >
> >                                 at
> >
> com.mysql.cj.jdbc.ClientPreparedStatement.executeInternal(ClientPreparedStatement.java:953)
> >
> >                                 at
> >
> com.mysql.cj.jdbc.ClientPreparedStatement.executeUpdateInternal(ClientPreparedStatement.java:1092)
> >
> >                                 at
> >
> com.mysql.cj.jdbc.ClientPreparedStatement.executeUpdateInternal(ClientPreparedStatement.java:1040)
> >
> >                                 at
> >
> com.mysql.cj.jdbc.ClientPreparedStatement.executeLargeUpdate(ClientPreparedStatement.java:1347)
> >
> >                                 at
> >
> com.mysql.cj.jdbc.ClientPreparedStatement.executeUpdate(ClientPreparedStatement.java:1025)
> >
> >                                 at
> > sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> >
> >                                 at
> >
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
> >
> >                                 at
> >
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> >
> >                                 at
> > java.lang.reflect.Method.invoke(Method.java:498)
> >
> >                                 at
> >
> org.apache.tomcat.jdbc.pool.StatementFacade$StatementProxy.invoke(StatementFacade.java:114)
> >
> >                                 at
> > com.sun.proxy.$Proxy238.executeUpdate(Unknown Source)
> >
> >                                 at
> >
> org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.executeUpdate(ResultSetReturnImpl.java:186)
> >
> >                                 ... 136 common frames omitted
> >
> >
> >
> > Updating the pom.xml to use Camel 3.5.0 I see multiple entries like this
> > during the boot (16 times to be exact):
> >
> >
> >
> > 2020-09-08 10:24:00.174 [http-nio-8081-exec-4] WARN
> > o.a.c.c.t.TransactionalJtaTransactionPolicy - Could not find the
> > transaction manager through java:/TransactionManager
> >
> >
> >
> > Then this (same stacktrace and message) 5 times:
> >
> >
> >
> > 2020-09-08 11:53:23.487 [Thread-0 (ActiveMQ-client] WARN
> > o.a.c.jta.TransactionErrorHandler - Transaction rollback (0x41543024)
> > redelivered(true) for (MessageId: ID:07638789-f1fb-11ea-b2f4-564c8aece8ca
> > on ExchangeId: ID-Kal030841-1599591203098-0-2) caught: null
> >
> > 2020-09-08 11:53:23.496 [Thread-0 (ActiveMQ-client] ERROR
> > o.a.c.jta.TransactionErrorHandler - Failed delivery for (MessageId:
> > ID:07638789-f1fb-11ea-b2f4-564c8aece8ca on ExchangeId:
> > ID-Kal030841-1599591203098-0-2). Exhausted after delivery attempt: 1
> > caught: java.lang.NullPointerException
> >
> >
> >
> > Message History (complete message history is disabled)
> >
> >
> >
> ---------------------------------------------------------------------------------------------------------------------------------------
> >
> > RouteId              ProcessorId
> > Processor
> > Elapsed (ms)
> >
> > [easybook-events   ] [easybook-events   ]
> >
> [from[sjms://topic:kt.mix.easybook.events?durableSubscriptionId=tire-lodge-dev&]
> > [        31]
> >
> >                 ...
> >
> > [easybook-events   ] [transacted1       ]
> > [transacted
> > ] [         0]
> >
> >
> >
> > Stacktrace
> >
> >
> >
> ---------------------------------------------------------------------------------------------------------------------------------------
> >
> >
> >
> > java.lang.NullPointerException: null
> >
> >                 at
> >
> org.apache.camel.cdi.transaction.TransactionalJtaTransactionPolicy.hasActiveTransaction(TransactionalJtaTransactionPolicy.java:114)
> >
> >                 at
> >
> org.apache.camel.cdi.transaction.RequiredJtaTransactionPolicy.run(RequiredJtaTransactionPolicy.java:26)
> >
> >                 at
> >
> org.apache.camel.jta.TransactionErrorHandler.doInTransactionTemplate(TransactionErrorHandler.java:186)
> >
> >                 at
> >
> org.apache.camel.jta.TransactionErrorHandler.processInTransaction(TransactionErrorHandler.java:137)
> >
> >                 at
> >
> org.apache.camel.jta.TransactionErrorHandler.process(TransactionErrorHandler.java:101)
> >
> >                 at
> >
> org.apache.camel.jta.TransactionErrorHandler.process(TransactionErrorHandler.java:110)
> >
> >                 at
> >
> org.apache.camel.processor.errorhandler.RedeliveryErrorHandler$SimpleTask.run(RedeliveryErrorHandler.java:404)
> >
> >                 at
> >
> org.apache.camel.impl.engine.DefaultReactiveExecutor$Worker.schedule(DefaultReactiveExecutor.java:148)
> >
> >                 at
> >
> org.apache.camel.impl.engine.DefaultReactiveExecutor.scheduleMain(DefaultReactiveExecutor.java:60)
> >
> >                 at
> > org.apache.camel.processor.Pipeline.process(Pipeline.java:147)
> >
> >                 at
> >
> org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:287)
> >
> >                 at
> >
> org.apache.camel.impl.engine.DefaultAsyncProcessorAwaitManager.process(DefaultAsyncProcessorAwaitManager.java:83)
> >
> >                 at
> >
> org.apache.camel.support.AsyncProcessorSupport.process(AsyncProcessorSupport.java:41)
> >
> >                 at
> >
> org.apache.camel.component.sjms.consumer.InOnlyMessageHandler.handleMessage(InOnlyMessageHandler.java:53)
> >
> >                 at
> >
> org.apache.camel.component.sjms.consumer.AbstractMessageHandler.onMessage(AbstractMessageHandler.java:81)
> >
> >                 at
> >
> org.apache.activemq.artemis.jms.client.JMSMessageListenerWrapper.onMessage(JMSMessageListenerWrapper.java:110)
> >
> >                 at
> >
> org.apache.activemq.artemis.core.client.impl.ClientConsumerImpl.callOnMessage(ClientConsumerImpl.java:1030)
> >
> >                 at
> >
> org.apache.activemq.artemis.core.client.impl.ClientConsumerImpl.access$400(ClientConsumerImpl.java:49)
> >
> >                 at
> >
> org.apache.activemq.artemis.core.client.impl.ClientConsumerImpl$Runner.run(ClientConsumerImpl.java:1153)
> >
> >                 at
> >
> org.apache.activemq.artemis.utils.actors.OrderedExecutor.doTask(OrderedExecutor.java:42)
> >
> >                 at
> >
> org.apache.activemq.artemis.utils.actors.OrderedExecutor.doTask(OrderedExecutor.java:31)
> >
> >                 at
> >
> org.apache.activemq.artemis.utils.actors.ProcessorBase.executePendingTasks(ProcessorBase.java:65)
> >
> >                 at
> >
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
> >
> >                 at
> >
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
> >
> >                 at
> >
> org.apache.activemq.artemis.utils.ActiveMQThreadFactory$1.run(ActiveMQThreadFactory.java:118)
> >
> >
> >
> > And then JMS message disappears from the topic.
> >
> > Note when using 3.4.5  message stays unacknowledged, I will stick to
> 3.4.5
> > for now… Please let me know if you need any more info.
> >
> >
> >
> > Cheers,
> >
> > Dmitry
> >
> >
> >
> >
> >
> > *From:* Shultz, Dmitry
> > *Sent:* Wednesday, September 2, 2020 9:17 PM
> > *To:* Zheng Feng <zf...@redhat.com>; users@camel.apache.org
> > *Subject:* Re: CDI + SJMS + transacted
> >
> >
> >
> > You are right, I forgot to specify transacted=true on the endpoint uri...
> >
> > To be exact I looked at all the places (even changed the AMQ connection
> > URL :) except this probably because for some stupid reason wishfully
> > thought the .transacted() on the route is enough for the component to set
> > it true automagically.
> >
> > The interesting thing is that it worked (infinite redeliveries) - message
> > was not committed to the broker (not lost) without the URI change just by
> > using the JTA error handler builder (comes with CDI component). Now it
> > works even with no redeliveries configured at all, but they are  never
> > stopping (do there is some good automation already:)
> > ------------------------------
> >
> > *From:* Zheng Feng <zf...@redhat.com>
> > *Sent:* 01 September 2020 23:09
> > *To:* users@camel.apache.org <us...@camel.apache.org>
> > *Subject:* Re: CDI + SJMS + transacted
> >
> >
> >
> > Yeah, TomEE could provide the "java:/TransactionManager" since it is a
> J2EE
> > container. I wonder if you use the "transacted=true" option on the sjms
> > consumer which will rollback the transaction if the router is failed.
> >
> >
> > On Tue, Sep 1, 2020 at 4:35 AM Shultz, Dmitry <Dmitry_Shultz@kaltire.com
> >
> > wrote:
> >
> > > Thanks for the reply Zheng.
> > >
> > > I'm running very similar code in the TomEE and It doesn't fail on NPE.
> > See
> > > similar behaviour though:
> > >
> > > [Thread-0 (ActiveMQ-client] WARN  o.a.c.jta.TransactionErrorHandler -
> > > Transaction rollback (0x30730302) redelivered(false) for (MessageId:
> > > ID:9fd77209-ebc6-11ea-955a-1ee7171b8787 on ExchangeId:
> > > ID-Kal030841-1598904862181-0-2) caught: test
> > >
> > > And after process restart the message is gone.
> > >
> > > I can confirm that when I use infinite re-delivery (the error handler
> > > never exhausted) the message stays in the durable topic as forever even
> > > after restart. So, I'm not sure if my expectation are correct i.e. does
> > it
> > > supposed to stay in the topic after error handler redeliveries are
> > > exhausted?
> > >
> > > Cheers,
> > > Dmitry
> > >
> > >
> > > -----Original Message-----
> > > From: Zheng Feng [mailto:zfeng@redhat.com <zf...@redhat.com>]
> > > Sent: Sunday, August 30, 2020 8:58 AM
> > > To: users@camel.apache.org
> > > Subject: Re: CDI + SJMS + transacted
> > >
> > > Hi Dmitry,
> > >
> > > It seems that SJMS [1]  currently only supports the use of internal JMS
> > > Transactions. There is no support for the Camel Transaction Processor
> or
> > > the Java Transaction API (JTA). Also if you want to use the JTA
> > transaction
> > > provided by the camel-cdi, the TransactionManager should be available
> via
> > > JNDI "java:/TransactionManager". Then you are running the camel in the
> > > standalone environment, and the transaction manager should be provided
> by
> > > the third party implementation, such as Narayana ( you can find the jta
> > > standalone example here [2]). The NPE I think should be fixed by
> > > CAMEL-14918 [3], and I will try to backport it to the 3.4.x
> > >
> > > Regards,
> > > Zheng Feng
> > >
> > > [1]
> > >
> >
> https://urldefense.com/v3/__https://camel.apache.org/components/latest/sjms-component.html__;!!LdWlNaMnLCM!OJ-X6YfRy0exjKJ8PNWy-d5aHbD6mgnBfTRZXXKak6kEojLVTmcKwcF4puKY9P1BTwqO$
> <https://urldefense.com/v3/__https:/camel.apache.org/components/latest/sjms-component.html__;!!LdWlNaMnLCM!OJ-X6YfRy0exjKJ8PNWy-d5aHbD6mgnBfTRZXXKak6kEojLVTmcKwcF4puKY9P1BTwqO$>
> > <
> https://urldefense.com/v3/__https:/camel.apache.org/components/latest/sjms-component.html__;!!LdWlNaMnLCM!OJ-X6YfRy0exjKJ8PNWy-d5aHbD6mgnBfTRZXXKak6kEojLVTmcKwcF4puKY9P1BTwqO$
> >
> > > [2]
> > >
> >
> https://urldefense.com/v3/__https://github.com/jbosstm/quickstart/tree/master/jta-1_2-standalone__;!!LdWlNaMnLCM!OJ-X6YfRy0exjKJ8PNWy-d5aHbD6mgnBfTRZXXKak6kEojLVTmcKwcF4puKY9Py3UShj$
> <https://urldefense.com/v3/__https:/github.com/jbosstm/quickstart/tree/master/jta-1_2-standalone__;!!LdWlNaMnLCM!OJ-X6YfRy0exjKJ8PNWy-d5aHbD6mgnBfTRZXXKak6kEojLVTmcKwcF4puKY9Py3UShj$>
> > <
> https://urldefense.com/v3/__https:/github.com/jbosstm/quickstart/tree/master/jta-1_2-standalone__;!!LdWlNaMnLCM!OJ-X6YfRy0exjKJ8PNWy-d5aHbD6mgnBfTRZXXKak6kEojLVTmcKwcF4puKY9Py3UShj$
> >
> > > [3]
> > >
> > >
> >
> https://urldefense.com/v3/__https://github.com/apache/camel/commit/4421b2bba294dd8828621684c7670f78d811ecd8*diff-773b20d331dac13fb17acfa0f58ac01f__;Iw!!LdWlNaMnLCM!OJ-X6YfRy0exjKJ8PNWy-d5aHbD6mgnBfTRZXXKak6kEojLVTmcKwcF4puKY9F_CLTBw$
> <https://urldefense.com/v3/__https:/github.com/apache/camel/commit/4421b2bba294dd8828621684c7670f78d811ecd8*diff-773b20d331dac13fb17acfa0f58ac01f__;Iw!!LdWlNaMnLCM!OJ-X6YfRy0exjKJ8PNWy-d5aHbD6mgnBfTRZXXKak6kEojLVTmcKwcF4puKY9F_CLTBw$>
> > <
> https://urldefense.com/v3/__https:/github.com/apache/camel/commit/4421b2bba294dd8828621684c7670f78d811ecd8*diff-773b20d331dac13fb17acfa0f58ac01f__;Iw!!LdWlNaMnLCM!OJ-X6YfRy0exjKJ8PNWy-d5aHbD6mgnBfTRZXXKak6kEojLVTmcKwcF4puKY9F_CLTBw$
> >
> > >
> > > On Sat, Aug 29, 2020 at 5:50 AM Shultz, Dmitry <
> > Dmitry_Shultz@kaltire.com>
> > > wrote:
> > >
> > > > Hi All,
> > > >
> > > > I'm probably doing something  wrong/stupid, but I can't get the sjms
> > > > (recent Camel, but same true for 2.25.2) to leave failed messages in
> > > > the JMS topic (AMQ Artemis) after exception.
> > > > This is what logged:
> > > >
> > > > [ctiveMQ-client-global-threads)] TransactionErrorHandler        WARN
> > > > Transaction rollback (0x5cd1283) redelivered(false) for (MessageId:
> > > > ID:bbaa590d-e975-11ea-9ad0-6c4b902fc0e1 on ExchangeId:
> > > > ID-Kal030841-1598650245838-0-1) caught: null
> > > > [ctiveMQ-client-global-threads)] TransactionErrorHandler        WARN
> > > > Transaction rollback (0x5cd1283) redelivered(false) for (MessageId:
> > > > ID:bbaa590d-e975-11ea-9ad0-6c4b902fc0e1 on ExchangeId:
> > > > ID-Kal030841-1598650245838-0-1) caught: null
> > > > [ctiveMQ-client-global-threads)] TransactionErrorHandler        WARN
> > > > Transaction rollback (0x5cd1283) redelivered(false) for (MessageId:
> > > > ID:bbaa590d-e975-11ea-9ad0-6c4b902fc0e1 on ExchangeId:
> > > > ID-Kal030841-1598650245838-0-1) caught: null
> > > > [ctiveMQ-client-global-threads)] TransactionErrorHandler        ERROR
> > > > Failed delivery for (MessageId:
> > > > ID:bbaa590d-e975-11ea-9ad0-6c4b902fc0e1 on
> > > > ExchangeId: ID-Kal030841-1598650245838-0-1). Exhausted after delivery
> > > > attempt: 3 caught: java.lang.NullPointerException
> > > >
> > > > Message History (complete message history is disabled)
> > > >
> > > >
> > >
> >
> ---------------------------------------------------------------------------------------------------------------------------------------
> > > > RouteId              ProcessorId          Processor
> > > >                                                 Elapsed (ms)
> > > > [route1            ] [route1            ]
> > > > [from[sjms://topic:topic:test?durableSubscriptionId=dmitr] [
> 1999]
> > > >                 ...
> > > > [route1            ] [transacted1       ] [transacted
> > > >                                               ] [         0]
> > > >
> > > > Stacktrace
> > > >
> > > >
> ----------------------------------------------------------------------
> > > > -----------------------------------------------------------------
> > > >
> > > > java.lang.NullPointerException: null
> > > >                 at
> > > >
> org.apache.camel.cdi.transaction.TransactionalJtaTransactionPolicy.has
> > > > ActiveTransaction(TransactionalJtaTransactionPolicy.java:105)
> > > > ~[camel-cdi-3.4.3.jar:3.4.3]
> > > >                 at
> > > >
> org.apache.camel.cdi.transaction.RequiredJtaTransactionPolicy.run(Requ
> > > > iredJtaTransactionPolicy.java:26)
> > > > ~[camel-cdi-3.4.3.jar:3.4.3]
> > > >                 at
> > > >
> org.apache.camel.jta.TransactionErrorHandler.doInTransactionTemplate(T
> > > > ransactionErrorHandler.java:193)
> > > > ~[camel-jta-3.4.3.jar:3.4.3]
> > > >                 at
> > > >
> org.apache.camel.jta.TransactionErrorHandler.processInTransaction(Tran
> > > > sactionErrorHandler.java:144)
> > > > ~[camel-jta-3.4.3.jar:3.4.3]
> > > >                 at
> > > >
> org.apache.camel.jta.TransactionErrorHandler.process(TransactionErrorH
> > > > andler.java:108)
> > > > ~[camel-jta-3.4.3.jar:3.4.3]
> > > >                 at
> > > >
> org.apache.camel.jta.TransactionErrorHandler.process(TransactionErrorH
> > > > andler.java:117)
> > > > ~[camel-jta-3.4.3.jar:3.4.3]
> > > >                 at
> > > >
> org.apache.camel.processor.errorhandler.RedeliveryErrorHandler$Redeliv
> > > > eryTask.redeliver(RedeliveryErrorHandler.java:766)
> > > > ~[camel-base-3.4.3.jar:3.4.3]
> > > >                 at
> > > >
> org.apache.camel.impl.engine.DefaultReactiveExecutor$Worker.schedule(D
> > > > efaultReactiveExecutor.java:148)
> > > > ~[camel-base-3.4.3.jar:3.4.3]
> > > >                 at
> > > >
> org.apache.camel.impl.engine.DefaultReactiveExecutor.scheduleMain(Defa
> > > > ultReactiveExecutor.java:60)
> > > > ~[camel-base-3.4.3.jar:3.4.3]
> > > >                 at
> > > > org.apache.camel.processor.Pipeline.process(Pipeline.java:147)
> > > > ~[camel-base-3.4.3.jar:3.4.3]
> > > >                 at
> > > >
> org.apache.camel.processor.CamelInternalProcessor.process(CamelInterna
> > > > lProcessor.java:286)
> > > > ~[camel-base-3.4.3.jar:3.4.3]
> > > >                 at
> > > >
> org.apache.camel.impl.engine.DefaultAsyncProcessorAwaitManager.process
> > > > (DefaultAsyncProcessorAwaitManager.java:83)
> > > > ~[camel-base-3.4.3.jar:3.4.3]
> > > >                 at
> > > >
> org.apache.camel.support.AsyncProcessorSupport.process(AsyncProcessorS
> > > > upport.java:40)
> > > > ~[camel-support-3.4.3.jar:3.4.3]
> > > >                 at
> > > >
> org.apache.camel.component.sjms.consumer.InOnlyMessageHandler.handleMe
> > > > ssage(InOnlyMessageHandler.java:52)
> > > > ~[camel-sjms-3.4.3.jar:3.4.3]
> > > >                 at
> > > >
> org.apache.camel.component.sjms.consumer.AbstractMessageHandler.onMess
> > > > age(AbstractMessageHandler.java:81)
> > > > ~[camel-sjms-3.4.3.jar:3.4.3]
> > > >                 at
> > > >
> org.apache.activemq.artemis.jms.client.JMSMessageListenerWrapper.onMes
> > > > sage(JMSMessageListenerWrapper.java:110)
> > > > ~[artemis-jms-client-2.14.0.jar:2.14.0]
> > > >                 at
> > > >
> org.apache.activemq.artemis.core.client.impl.ClientConsumerImpl.callOn
> > > > Message(ClientConsumerImpl.java:1030)
> > > > ~[artemis-core-client-2.14.0.jar:2.14.0]
> > > >
> > > > So, it looks like rollback is kicked off, but when I restart the
> > > > process message is gone from the JMS topic.
> > > >
> > > > Sample reproducer  (generated using
> > > > -DarchetypeArtifactId=camel-archetype-cdi as described here
> > > >
> https://urldefense.com/v3/__https://camel.apache.org/components/latest
> <https://urldefense.com/v3/__https:/camel.apache.org/components/latest>
> > <https://urldefense.com/v3/__https:/camel.apache.org/components/latest>
> > > >
> /others/cdi.html__;!!LdWlNaMnLCM!OJ-X6YfRy0exjKJ8PNWy-d5aHbD6mgnBfTRZX
> > > > XKak6kEojLVTmcKwcF4puKY9NnrgwcA$  ) is here
> > > >
> https://urldefense.com/v3/__https://github.com/zeppelinux/CamelCDISjms
> <https://urldefense.com/v3/__https:/github.com/zeppelinux/CamelCDISjms>
> > <https://urldefense.com/v3/__https:/github.com/zeppelinux/CamelCDISjms>
>
> > > >
> Test__;!!LdWlNaMnLCM!OJ-X6YfRy0exjKJ8PNWy-d5aHbD6mgnBfTRZXXKak6kEojLVT
> > > > mcKwcF4puKY9HBU5Opk$
> > > > Please  have a look.
> > > >
> > > > Cheers,
> > > > Dmitry
> > > >
> > >
> >
>
>

RE: CDI + SJMS + transacted

Posted by "Shultz, Dmitry" <Dm...@kaltire.com>.
I was not sure what to do in the extension, so I just created this class and made it part of the service codebase:

@Specializes
public class PatchedRequiredJtaTransactionPolicy extends RequiredJtaTransactionPolicy {

    @Resource
    TransactionManager txMgr;

    @Override
    public void run(final Runnable runnable) throws Throwable {
        transactionManager = txMgr;
        runWithTransaction(runnable, !hasActiveTransaction());
    }
}

And it all (Camel 3.5.0, SJMS transactions, Hibernate transactions, …) works now in TomEE 7.0.6 ☺ Thanks  Romain!
If there is anything I can do to make it ‘nicer’ (or maybe I’m missing anything) –any suggestion will be appreciated ☺.

Cheers,
Dmitry


From: Romain Manni-Bucau [mailto:rmannibucau@gmail.com]
Sent: Wednesday, September 9, 2020 10:55 AM
To: Shultz, Dmitry <Dm...@kaltire.com>
Cc: users@camel.apache.org
Subject: Re: CDI + SJMS + transacted

As mentionned previously Camel needs to be patched.
The easiest is a cdi extension replacing RequiredJtaTransactionPolicy by a custom impl (likely using @Resource TransactionManager txMgr instead of the lookup, should be trivial I think).

Side note: this logic likely needs to move in a camel-ee module cause cdi module seems inaccurate (in terms of dependencies and usage and it already created troubles by the past even if the openjpa code could mitigate it).

Romain Manni-Bucau
@rmannibucau [twitter.com]<https://urldefense.com/v3/__https:/twitter.com/rmannibucau__;!!LdWlNaMnLCM!KicObP30ibyFUuNzaC66jwhfJNxEBH78hcl9h6oK-0EvXz_jf8WmRe1tmDF0T0GI2jro$> |  Blog [rmannibucau.metawerx.net]<https://urldefense.com/v3/__https:/rmannibucau.metawerx.net/__;!!LdWlNaMnLCM!KicObP30ibyFUuNzaC66jwhfJNxEBH78hcl9h6oK-0EvXz_jf8WmRe1tmDF0T_V5imJ7$> | Old Blog [rmannibucau.wordpress.com]<https://urldefense.com/v3/__http:/rmannibucau.wordpress.com__;!!LdWlNaMnLCM!KicObP30ibyFUuNzaC66jwhfJNxEBH78hcl9h6oK-0EvXz_jf8WmRe1tmDF0T_p1aJXo$> | Github [github.com]<https://urldefense.com/v3/__https:/github.com/rmannibucau__;!!LdWlNaMnLCM!KicObP30ibyFUuNzaC66jwhfJNxEBH78hcl9h6oK-0EvXz_jf8WmRe1tmDF0T0NqDxib$> | LinkedIn [linkedin.com]<https://urldefense.com/v3/__https:/www.linkedin.com/in/rmannibucau__;!!LdWlNaMnLCM!KicObP30ibyFUuNzaC66jwhfJNxEBH78hcl9h6oK-0EvXz_jf8WmRe1tmDF0TzdL7iSF$> | Book [packtpub.com]<https://urldefense.com/v3/__https:/www.packtpub.com/application-development/java-ee-8-high-performance__;!!LdWlNaMnLCM!KicObP30ibyFUuNzaC66jwhfJNxEBH78hcl9h6oK-0EvXz_jf8WmRe1tmDF0T4_pbDb7$>


Le mer. 9 sept. 2020 à 19:42, Shultz, Dmitry <Dm...@kaltire.com>> a écrit :
Romain,

My current Hibernate is 4.2.21.Final,  here are the different outcomes I see after I applied your suggestion to the persistence.xml:


1.       name="hibernate.transaction.jta.platform" value="org.apache.openejb.hibernate.OpenEJBJtaPlatform2"

getting (as expected) java.lang.ClassNotFoundException: org.hibernate.engine.transaction.jta.platform.internal.AbstractJtaPlatform


2.       name="hibernate.transaction.jta.platform" value="org.apache.openejb.hibernate.OpenEJBJtaPlatform"

getting same WARN  o.a.c.c.t.TransactionalJtaTransactionPolicy - Could not find the transaction manager through java:/TransactionManager when Camel boots



3.       name="hibernate.transaction.manager_lookup_class" value="org.apache.openejb.hibernate.TransactionManagerLookup"
getting same WARN  o.a.c.c.t.TransactionalJtaTransactionPolicy - Could not find the transaction manager through java:/TransactionManager when Camel boots

In  2 & 3 the persistence unit starts successfully, it’s only when Camel tries to find the TransactionManager it logs the warning.

I tried to upgrade Hibernate to 5.4.20.Final but it doesn’t seem to be compatible with my current TomEE 7.0.6  and I can’t easily update it at the moment ☹

                Caused by: java.lang.ClassNotFoundException: org.hibernate.ejb.HibernatePersistence
                                at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1364)
                                at org.apache.tomee.catalina.TomEEWebappClassLoader.loadClass(TomEEWebappClassLoader.java:208)
                                at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1185)
                                at org.apache.openejb.assembler.classic.EntityManagerFactoryCallable.call(EntityManagerFactoryCallable.java:84)
                                at org.apache.openejb.assembler.classic.ReloadableEntityManagerFactory.createDelegate(ReloadableEntityManagerFactory.java:134)

Is there anything else I can try?

Cheers,
Dmitry


From: Romain Manni-Bucau [mailto:rmannibucau@gmail.com<ma...@gmail.com>]
Sent: Wednesday, September 9, 2020 12:56 AM
To: users@camel.apache.org<ma...@camel.apache.org>
Cc: Shultz, Dmitry <Dm...@kaltire.com>>
Subject: Re: CDI + SJMS + transacted

In hibernate configuration, you can try to force the transaction manager lokup hibernate.transaction.jta.platform=org.apache.openejb.hibernate.OpenEJBJtaPlatform2 (if you use older versions with the older hibernate key just drop the "2" at the end of the platform and if you use a very old hibernate version (manager_lookup_class), then use org.apache.openejb.hibernate.TransactionManagerLookup)

Romain Manni-Bucau
@rmannibucau [twitter.com]<https://urldefense.com/v3/__https:/twitter.com/rmannibucau__;!!LdWlNaMnLCM!L4bACvX05-Lb8u2ekiHyS3J3BxvhaVb4D1pnwM4ItphCC4flnrEsTsv-xjwZfoi1Cx-a$> |  Blog [rmannibucau.metawerx.net]<https://urldefense.com/v3/__https:/rmannibucau.metawerx.net/__;!!LdWlNaMnLCM!L4bACvX05-Lb8u2ekiHyS3J3BxvhaVb4D1pnwM4ItphCC4flnrEsTsv-xjwZfsV0FRfY$> | Old Blog [rmannibucau.wordpress.com]<https://urldefense.com/v3/__http:/rmannibucau.wordpress.com__;!!LdWlNaMnLCM!L4bACvX05-Lb8u2ekiHyS3J3BxvhaVb4D1pnwM4ItphCC4flnrEsTsv-xjwZfvdkhBJC$> | Github [github.com]<https://urldefense.com/v3/__https:/github.com/rmannibucau__;!!LdWlNaMnLCM!L4bACvX05-Lb8u2ekiHyS3J3BxvhaVb4D1pnwM4ItphCC4flnrEsTsv-xjwZflUkiucl$> | LinkedIn [linkedin.com]<https://urldefense.com/v3/__https:/www.linkedin.com/in/rmannibucau__;!!LdWlNaMnLCM!L4bACvX05-Lb8u2ekiHyS3J3BxvhaVb4D1pnwM4ItphCC4flnrEsTsv-xjwZfiS4xUan$> | Book [packtpub.com]<https://urldefense.com/v3/__https:/www.packtpub.com/application-development/java-ee-8-high-performance__;!!LdWlNaMnLCM!L4bACvX05-Lb8u2ekiHyS3J3BxvhaVb4D1pnwM4ItphCC4flnrEsTsv-xjwZfoOPIGUi$>


Le mer. 9 sept. 2020 à 09:42, Zheng Feng <zf...@redhat.com>> a écrit :
Hi Dmitry,

It seems that the TransactionManager can not be accessed via
"java:/TransactionManager" and I am not an expert of TomEE also I am not
sure if there is a way to set the transaction manager jndi name in the
configuration file ?

Regards,
Zheng Feng

On Wed, Sep 9, 2020 at 3:18 AM Shultz, Dmitry <Dm...@kaltire.com>>
wrote:

> Zheng,
>
>
>
> I’m still having problem and it seems to behave differently running on the
> same TomEE version (7.0.6) but different Camel 3+ versions.
>
>
>
> To reproduce  I corrupted the query (handled by Deltaspike Data Module
> repository).
>
>
>
> When it runs (fails) with Camel 3.4.5 it behaves as expected the first
> time, but when it tries to redeliver the same JMS message it complains with
> ‘Cannot join transaction: do not override
> hibernate.transaction.factory_class’. Here is the full stack for redelivery:
>
>
>
> 2020-09-08 11:07:56.428 [Thread-0 (ActiveMQ-client] WARN
> c.k.m.c.DeadLetterChannelBuilderProducer - redelivery attempt 1 to
> direct://process
>
> 2020-09-08 11:07:56.440 [Thread-0 (ActiveMQ-client] WARN
> o.h.ejb.AbstractEntityManagerImpl - HHH000326: Cannot join transaction: do
> not override hibernate.transaction.factory_class
>
> 2020-09-08 11:07:56.442 [Thread-0 (ActiveMQ-client] ERROR
> c.k.m.c.DeadLetterChannelBuilderProducer - processing failed with:
>
> javax.persistence.TransactionRequiredException: No active JTA transaction
> on joinTransaction call
>
>                 at
> org.hibernate.ejb.AbstractEntityManagerImpl.joinTransaction(AbstractEntityManagerImpl.java:1233)
>
>                 at
> org.hibernate.ejb.AbstractEntityManagerImpl.joinTransaction(AbstractEntityManagerImpl.java:1183)
>
>                 at
> org.apache.deltaspike.jpa.impl.transaction.BeanManagedUserTransactionStrategy.beforeProceed(BeanManagedUserTransactionStrategy.java:171)
>
>                 at
> org.apache.deltaspike.jpa.impl.transaction.EnvironmentAwareTransactionStrategy.beforeProceed(EnvironmentAwareTransactionStrategy.java:109)
>
>                 at
> org.apache.deltaspike.jpa.impl.transaction.ResourceLocalTransactionStrategy.execute(ResourceLocalTransactionStrategy.java:127)
>
>                 at
> org.apache.deltaspike.jpa.impl.transaction.TransactionalInterceptor.executeInTransaction(TransactionalInterceptor.java:57)
>
>                 at sun.reflect.NativeMethodAccessorImpl.invoke0(Native
> Method)
>
>                 at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
>
>                 at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>
>                 at java.lang.reflect.Method.invoke(Method.java:498)
>
>                 at
> org.apache.webbeans.component.InterceptorBean.intercept(InterceptorBean.java:136)
>
>                 at
> org.apache.webbeans.intercept.InterceptorInvocationContext.proceed(InterceptorInvocationContext.java:63)
>
>                 at
> org.apache.webbeans.intercept.DefaultInterceptorHandler.invoke(DefaultInterceptorHandler.java:139)
>
>                 at
> com.kaltire.mix.tirelodge.camel.beans.EventProcessor$$OwbInterceptProxy0.process(com/kaltire/mix/tirelodge/camel/beans/EventProcessor.java)
>
>                 at sun.reflect.NativeMethodAccessorImpl.invoke0(Native
> Method)
>
>                 at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
>
>                 at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>
>                 at java.lang.reflect.Method.invoke(Method.java:498)
>
>                 at
> org.apache.camel.support.ObjectHelper.invokeMethodSafe(ObjectHelper.java:209)
>
>                 at
> org.apache.camel.component.bean.MethodInfo.invoke(MethodInfo.java:421)
>
>                 at
> org.apache.camel.component.bean.MethodInfo$1.doProceed(MethodInfo.java:242)
>
>                 at
> org.apache.camel.component.bean.MethodInfo$1.proceed(MethodInfo.java:213)
>
>                 at
> org.apache.camel.component.bean.AbstractBeanProcessor.process(AbstractBeanProcessor.java:154)
>
>                 at
> org.apache.camel.component.bean.BeanProcessor.process(BeanProcessor.java:56)
>
>                 at
> org.apache.camel.management.DefaultInstrumentationProcessor.process(DefaultInstrumentationProcessor.java:91)
>
>                 at
> org.apache.camel.processor.errorhandler.RedeliveryErrorHandler$RedeliveryTask.redeliver(RedeliveryErrorHandler.java:766)
>
>                 at
> org.apache.camel.impl.engine.DefaultReactiveExecutor$Worker.schedule(DefaultReactiveExecutor.java:148)
>
>                 at
> org.apache.camel.impl.engine.DefaultReactiveExecutor.scheduleSync(DefaultReactiveExecutor.java:65)
>
>                 at
> org.apache.camel.processor.errorhandler.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:175)
>
>                 at
> org.apache.camel.impl.engine.DefaultAsyncProcessorAwaitManager.process(DefaultAsyncProcessorAwaitManager.java:83)
>
>                 at
> org.apache.camel.processor.errorhandler.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:158)
>
>                 at
> org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:260)
>
>                 at
> org.apache.camel.processor.ChoiceProcessor.process(ChoiceProcessor.java:115)
>
>                 at
> org.apache.camel.impl.engine.DefaultAsyncProcessorAwaitManager.process(DefaultAsyncProcessorAwaitManager.java:83)
>
>                 at
> org.apache.camel.support.AsyncProcessorSupport.process(AsyncProcessorSupport.java:40)
>
>                 at
> org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:260)
>
>                 at
> org.apache.camel.impl.engine.DefaultAsyncProcessorAwaitManager.process(DefaultAsyncProcessorAwaitManager.java:83)
>
>                 at
> org.apache.camel.support.AsyncProcessorSupport.process(AsyncProcessorSupport.java:40)
>
>                 at
> org.apache.camel.jta.TransactionErrorHandler.processByErrorHandler(TransactionErrorHandler.java:242)
>
>                 at
> org.apache.camel.jta.TransactionErrorHandler$1.run(TransactionErrorHandler.java:203)
>
>                 at
> org.apache.camel.cdi.transaction.TransactionalJtaTransactionPolicy.runWithTransaction(TransactionalJtaTransactionPolicy.java:51)
>
>                 at
> org.apache.camel.cdi.transaction.RequiredJtaTransactionPolicy.run(RequiredJtaTransactionPolicy.java:26)
>
>                 at
> org.apache.camel.jta.TransactionErrorHandler.doInTransactionTemplate(TransactionErrorHandler.java:193)
>
>                 at
> org.apache.camel.jta.TransactionErrorHandler.processInTransaction(TransactionErrorHandler.java:144)
>
>                 at
> org.apache.camel.jta.TransactionErrorHandler.process(TransactionErrorHandler.java:108)
>
>                 at
> org.apache.camel.jta.TransactionErrorHandler.process(TransactionErrorHandler.java:117)
>
>                 at
> org.apache.camel.processor.errorhandler.RedeliveryErrorHandler$SimpleTask.run(RedeliveryErrorHandler.java:395)
>
>                 at
> org.apache.camel.impl.engine.DefaultReactiveExecutor$Worker.schedule(DefaultReactiveExecutor.java:148)
>
>                 at
> org.apache.camel.impl.engine.DefaultReactiveExecutor.scheduleSync(DefaultReactiveExecutor.java:65)
>
>                 at
> org.apache.camel.processor.errorhandler.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:175)
>
>                 at
> org.apache.camel.impl.engine.DefaultAsyncProcessorAwaitManager.process(DefaultAsyncProcessorAwaitManager.java:83)
>
>                 at
> org.apache.camel.processor.errorhandler.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:158)
>
>                 at
> org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:260)
>
>                 at
> org.apache.camel.processor.Pipeline$PipelineTask.run(Pipeline.java:90)
>
>                 at
> org.apache.camel.impl.engine.DefaultReactiveExecutor$Worker.schedule(DefaultReactiveExecutor.java:148)
>
>                 at
> org.apache.camel.impl.engine.DefaultReactiveExecutor.scheduleSync(DefaultReactiveExecutor.java:65)
>
>                 at
> org.apache.camel.processor.Pipeline.process(Pipeline.java:145)
>
>                 at
> org.apache.camel.impl.engine.DefaultAsyncProcessorAwaitManager.process(DefaultAsyncProcessorAwaitManager.java:83)
>
>                 at
> org.apache.camel.support.AsyncProcessorSupport.process(AsyncProcessorSupport.java:40)
>
>                 at
> org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:260)
>
>                 at
> org.apache.camel.component.direct.DirectProducer.process(DirectProducer.java:66)
>
>                 at
> org.apache.camel.processor.SendProcessor.process(SendProcessor.java:168)
>
>                 at
> org.apache.camel.impl.engine.DefaultAsyncProcessorAwaitManager.process(DefaultAsyncProcessorAwaitManager.java:83)
>
>                 at
> org.apache.camel.support.AsyncProcessorSupport.process(AsyncProcessorSupport.java:40)
>
>                 at
> org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:260)
>
>                 at
> org.apache.camel.processor.Pipeline$PipelineTask.run(Pipeline.java:90)
>
>                 at
> org.apache.camel.impl.engine.DefaultReactiveExecutor$Worker.schedule(DefaultReactiveExecutor.java:148)
>
>                 at
> org.apache.camel.impl.engine.DefaultReactiveExecutor.scheduleSync(DefaultReactiveExecutor.java:65)
>
>                 at
> org.apache.camel.processor.Pipeline.process(Pipeline.java:145)
>
>                 at
> org.apache.camel.impl.engine.DefaultAsyncProcessorAwaitManager.process(DefaultAsyncProcessorAwaitManager.java:83)
>
>                 at
> org.apache.camel.support.AsyncProcessorSupport.process(AsyncProcessorSupport.java:40)
>
>                 at
> org.apache.camel.jta.TransactionErrorHandler.processByErrorHandler(TransactionErrorHandler.java:242)
>
>                 at
> org.apache.camel.jta.TransactionErrorHandler$1.run(TransactionErrorHandler.java:203)
>
>                 at
> org.apache.camel.cdi.transaction.TransactionalJtaTransactionPolicy.runWithTransaction(TransactionalJtaTransactionPolicy.java:51)
>
>                 at
> org.apache.camel.cdi.transaction.RequiredJtaTransactionPolicy.run(RequiredJtaTransactionPolicy.java:26)
>
>                 at
> org.apache.camel.jta.TransactionErrorHandler.doInTransactionTemplate(TransactionErrorHandler.java:193)
>
>                 at
> org.apache.camel.jta.TransactionErrorHandler.processInTransaction(TransactionErrorHandler.java:144)
>
>                 at
> org.apache.camel.jta.TransactionErrorHandler.process(TransactionErrorHandler.java:108)
>
>                 at
> org.apache.camel.jta.TransactionErrorHandler.process(TransactionErrorHandler.java:117)
>
>                 at
> org.apache.camel.processor.errorhandler.RedeliveryErrorHandler$SimpleTask.run(RedeliveryErrorHandler.java:395)
>
>                 at
> org.apache.camel.impl.engine.DefaultReactiveExecutor$Worker.schedule(DefaultReactiveExecutor.java:148)
>
>                 at
> org.apache.camel.impl.engine.DefaultReactiveExecutor.scheduleMain(DefaultReactiveExecutor.java:60)
>
>                 at
> org.apache.camel.processor.Pipeline.process(Pipeline.java:147)
>
>                 at
> org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:286)
>
>                 at
> org.apache.camel.impl.engine.DefaultAsyncProcessorAwaitManager.process(DefaultAsyncProcessorAwaitManager.java:83)
>
>                 at
> org.apache.camel.support.AsyncProcessorSupport.process(AsyncProcessorSupport.java:40)
>
>                 at
> org.apache.camel.component.sjms.consumer.InOnlyMessageHandler.handleMessage(InOnlyMessageHandler.java:52)
>
>                 at
> org.apache.camel.component.sjms.consumer.AbstractMessageHandler.onMessage(AbstractMessageHandler.java:81)
>
>                 at
> org.apache.activemq.artemis.jms.client.JMSMessageListenerWrapper.onMessage(JMSMessageListenerWrapper.java:110)
>
>                 at
> org.apache.activemq.artemis.core.client.impl.ClientConsumerImpl.callOnMessage(ClientConsumerImpl.java:1030)
>
>                 at
> org.apache.activemq.artemis.core.client.impl.ClientConsumerImpl.access$400(ClientConsumerImpl.java:49)
>
>                 at
> org.apache.activemq.artemis.core.client.impl.ClientConsumerImpl$Runner.run(ClientConsumerImpl.java:1153)
>
>                 at
> org.apache.activemq.artemis.utils.actors.OrderedExecutor.doTask(OrderedExecutor.java:42)
>
>                 at
> org.apache.activemq.artemis.utils.actors.OrderedExecutor.doTask(OrderedExecutor.java:31)
>
>                 at
> org.apache.activemq.artemis.utils.actors.ProcessorBase.executePendingTasks(ProcessorBase.java:65)
>
>                 at
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
>
>                 at
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
>
>                 at
> org.apache.activemq.artemis.utils.ActiveMQThreadFactory$1.run(ActiveMQThreadFactory.java:118)
>
>                 Suppressed: javax.persistence.PersistenceException:
> org.hibernate.exception.SQLGrammarException: could not execute statement
>
>                                 at
> org.hibernate.ejb.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1387)
>
>                                 at
> org.hibernate.ejb.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1310)
>
>                                 at
> org.hibernate.ejb.AbstractEntityManagerImpl.throwPersistenceException(AbstractEntityManagerImpl.java:1397)
>
>                                 at
> org.hibernate.ejb.AbstractQueryImpl.executeUpdate(AbstractQueryImpl.java:111)
>
>                                 at
> org.apache.deltaspike.data.impl.builder.result.QueryProcessorFactory$ExecuteUpdateQueryProcessor.executeQuery(QueryProcessorFactory.java:192)
>
>                                 at
> org.apache.deltaspike.data.impl.handler.CdiQueryInvocationContext.executeQuery(CdiQueryInvocationContext.java:253)
>
>                                 at
> org.apache.deltaspike.data.impl.builder.AnnotatedQueryBuilder.execute(AnnotatedQueryBuilder.java:51)
>
>                                 at
> org.apache.deltaspike.data.impl.builder.QueryBuilder.executeQuery(QueryBuilder.java:57)
>
>                                 at
> org.apache.deltaspike.data.impl.builder.AnnotatedQueryBuilder$$OwbNormalScopeProxy0.executeQuery(org/apache/deltaspike/data/impl/builder/AnnotatedQueryBuilder.java)
>
>                                 at
> org.apache.deltaspike.data.impl.tx.TransactionalQueryRunner$1.proceed(TransactionalQueryRunner.java:73)
>
>                                 at
> org.apache.deltaspike.jpa.impl.transaction.ResourceLocalTransactionStrategy.execute(ResourceLocalTransactionStrategy.java:130)
>
>                                 at
> org.apache.deltaspike.data.impl.tx.TransactionalQueryRunner.executeTransactional(TransactionalQueryRunner.java:68)
>
>                                 at
> org.apache.deltaspike.data.impl.tx.TransactionalQueryRunner.executeQuery(TransactionalQueryRunner.java:50)
>
>                                 at
> org.apache.deltaspike.data.impl.tx.TransactionalQueryRunner$$OwbNormalScopeProxy0.executeQuery(org/apache/deltaspike/data/impl/tx/TransactionalQueryRunner.java)
>
>                                 at
> org.apache.deltaspike.data.impl.handler.QueryHandler.process(QueryHandler.java:151)
>
>                                 at
> org.apache.deltaspike.data.impl.handler.QueryHandler$1.proceed(QueryHandler.java:119)
>
>                                 at
> org.apache.deltaspike.jpa.impl.transaction.ResourceLocalTransactionStrategy.execute(ResourceLocalTransactionStrategy.java:130)
>
>                                 at
> org.apache.deltaspike.data.impl.handler.QueryHandler.invoke(QueryHandler.java:111)
>
>                                 at
> org.apache.deltaspike.data.impl.handler.QueryHandler$$OwbNormalScopeProxy0.invoke(org/apache/deltaspike/data/impl/handler/QueryHandler.java)
>
>                                 at
> org.apache.deltaspike.proxy.spi.invocation.DeltaSpikeProxyInvocationHandler.proceed(DeltaSpikeProxyInvocationHandler.java:97)
>
>                                 at
> org.apache.deltaspike.proxy.spi.invocation.DeltaSpikeProxyInvocationContext.proceed(DeltaSpikeProxyInvocationContext.java:101)
>
>                                 at
> org.apache.deltaspike.jpa.impl.transaction.ResourceLocalTransactionStrategy.execute(ResourceLocalTransactionStrategy.java:130)
>
>                                 at
> org.apache.deltaspike.jpa.impl.transaction.TransactionalInterceptor.executeInTransaction(TransactionalInterceptor.java:57)
>
>                                 at
> sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>
>                                 at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
>
>                                 at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>
>                                 at
> java.lang.reflect.Method.invoke(Method.java:498)
>
>                                 at
> org.apache.webbeans.component.InterceptorBean.intercept(InterceptorBean.java:136)
>
>                                 at
> org.apache.deltaspike.proxy.spi.invocation.DeltaSpikeProxyInvocationContext.proceed(DeltaSpikeProxyInvocationContext.java:80)
>
>                                 at
> org.apache.deltaspike.proxy.spi.invocation.DeltaSpikeProxyInvocationHandler.invoke(DeltaSpikeProxyInvocationHandler.java:63)
>
>                                 at
> org.apache.deltaspike.proxy.spi.invocation.DeltaSpikeProxyInvocationHandler$$OwbNormalScopeProxy0.invoke(org/apache/deltaspike/proxy/spi/invocation/DeltaSpikeProxyInvocationHandler.java)
>
>                                 at
> com.kaltire.mix.tirelodge.dao.StorageRecordRepository$$DSPartialBeanProxy.updateStorageRecord(Unknown
> Source)
>
>                                 at
> com.kaltire.mix.tirelodge.camel.beans.EventProcessor.process(EventProcessor.java:96)
>
>                                 at
> sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>
>                                 at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
>
>                                 at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>
>                                 at
> java.lang.reflect.Method.invoke(Method.java:498)
>
>                                 at
> org.apache.webbeans.intercept.AbstractInvocationContext.directProceed(AbstractInvocationContext.java:113)
>
>                                 at
> org.apache.webbeans.intercept.AbstractInvocationContext.proceed(AbstractInvocationContext.java:106)
>
>                                 at
> org.apache.webbeans.intercept.InterceptorInvocationContext.proceed(InterceptorInvocationContext.java:67)
>
>                                 at
> org.apache.deltaspike.jpa.impl.transaction.ResourceLocalTransactionStrategy.execute(ResourceLocalTransactionStrategy.java:130)
>
>                                 at
> org.apache.deltaspike.jpa.impl.transaction.TransactionalInterceptor.executeInTransaction(TransactionalInterceptor.java:57)
>
>                                 at
> sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>
>                                 at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
>
>                                 at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>
>                                 at
> java.lang.reflect.Method.invoke(Method.java:498)
>
>                                 at
> org.apache.webbeans.component.InterceptorBean.intercept(InterceptorBean.java:136)
>
>                                 at
> org.apache.webbeans.intercept.InterceptorInvocationContext.proceed(InterceptorInvocationContext.java:63)
>
>                                 at
> org.apache.webbeans.intercept.DefaultInterceptorHandler.invoke(DefaultInterceptorHandler.java:139)
>
>                                 at
> com.kaltire.mix.tirelodge.camel.beans.EventProcessor$$OwbInterceptProxy0.process(com/kaltire/mix/tirelodge/camel/beans/EventProcessor.java)
>
>                                 at
> sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>
>                                 at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
>
>                                 at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>
>                                 at
> java.lang.reflect.Method.invoke(Method.java:498)
>
>                                 at
> org.apache.camel.support.ObjectHelper.invokeMethodSafe(ObjectHelper.java:209)
>
>                                 at
> org.apache.camel.component.bean.MethodInfo.invoke(MethodInfo.java:421)
>
>                                 at
> org.apache.camel.component.bean.MethodInfo$1.doProceed(MethodInfo.java:242)
>
>                                 at
> org.apache.camel.component.bean.MethodInfo$1.proceed(MethodInfo.java:213)
>
>                                 at
> org.apache.camel.component.bean.AbstractBeanProcessor.process(AbstractBeanProcessor.java:154)
>
>                                 at
> org.apache.camel.component.bean.BeanProcessor.process(BeanProcessor.java:56)
>
>                                 at
> org.apache.camel.management.DefaultInstrumentationProcessor.process(DefaultInstrumentationProcessor.java:91)
>
>                                 at
> org.apache.camel.processor.errorhandler.RedeliveryErrorHandler$RedeliveryTask.doRun(RedeliveryErrorHandler.java:702)
>
>                                 at
> org.apache.camel.processor.errorhandler.RedeliveryErrorHandler$RedeliveryTask.run(RedeliveryErrorHandler.java:616)
>
>                                 ... 72 common frames omitted
>
>                 Caused by: org.hibernate.exception.SQLGrammarException:
> could not execute statement
>
>                                 at
> org.hibernate.exception.internal.SQLExceptionTypeDelegate.convert(SQLExceptionTypeDelegate.java:82)
>
>                                 at
> org.hibernate.exception.internal.StandardSQLExceptionConverter.convert(StandardSQLExceptionConverter.java:49)
>
>                                 at
> org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:124)
>
>                                 at
> org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:109)
>
>                                 at
> org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.executeUpdate(ResultSetReturnImpl.java:189)
>
>                                 at
> org.hibernate.engine.query.spi.NativeSQLQueryPlan.performExecuteUpdate(NativeSQLQueryPlan.java:204)
>
>                                 at
> org.hibernate.internal.SessionImpl.executeNativeUpdate(SessionImpl.java:1238)
>
>                                 at
> org.hibernate.internal.SQLQueryImpl.executeUpdate(SQLQueryImpl.java:401)
>
>                                 at
> org.hibernate.ejb.QueryImpl.internalExecuteUpdate(QueryImpl.java:198)
>
>                                 at
> org.hibernate.ejb.AbstractQueryImpl.executeUpdate(AbstractQueryImpl.java:102)
>
>                                 ... 131 common frames omitted
>
>                 Caused by: java.sql.SQLSyntaxErrorException: Table
> 'KTDN_TM.badTable doesn't exist
>
>                                 at
> com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:120)
>
>                                 at
> com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:97)
>
>                                 at
> com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:122)
>
>                                 at
> com.mysql.cj.jdbc.ClientPreparedStatement.executeInternal(ClientPreparedStatement.java:953)
>
>                                 at
> com.mysql.cj.jdbc.ClientPreparedStatement.executeUpdateInternal(ClientPreparedStatement.java:1092)
>
>                                 at
> com.mysql.cj.jdbc.ClientPreparedStatement.executeUpdateInternal(ClientPreparedStatement.java:1040)
>
>                                 at
> com.mysql.cj.jdbc.ClientPreparedStatement.executeLargeUpdate(ClientPreparedStatement.java:1347)
>
>                                 at
> com.mysql.cj.jdbc.ClientPreparedStatement.executeUpdate(ClientPreparedStatement.java:1025)
>
>                                 at
> sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>
>                                 at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
>
>                                 at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>
>                                 at
> java.lang.reflect.Method.invoke(Method.java:498)
>
>                                 at
> org.apache.tomcat.jdbc.pool.StatementFacade$StatementProxy.invoke(StatementFacade.java:114)
>
>                                 at
> com.sun.proxy.$Proxy238.executeUpdate(Unknown Source)
>
>                                 at
> org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.executeUpdate(ResultSetReturnImpl.java:186)
>
>                                 ... 136 common frames omitted
>
>
>
> Updating the pom.xml to use Camel 3.5.0 I see multiple entries like this
> during the boot (16 times to be exact):
>
>
>
> 2020-09-08 10:24:00.174 [http-nio-8081-exec-4] WARN
> o.a.c.c.t.TransactionalJtaTransactionPolicy - Could not find the
> transaction manager through java:/TransactionManager
>
>
>
> Then this (same stacktrace and message) 5 times:
>
>
>
> 2020-09-08 11:53:23.487 [Thread-0 (ActiveMQ-client] WARN
> o.a.c.jta.TransactionErrorHandler - Transaction rollback (0x41543024)
> redelivered(true) for (MessageId: ID:07638789-f1fb-11ea-b2f4-564c8aece8ca
> on ExchangeId: ID-Kal030841-1599591203098-0-2) caught: null
>
> 2020-09-08 11:53:23.496 [Thread-0 (ActiveMQ-client] ERROR
> o.a.c.jta.TransactionErrorHandler - Failed delivery for (MessageId:
> ID:07638789-f1fb-11ea-b2f4-564c8aece8ca on ExchangeId:
> ID-Kal030841-1599591203098-0-2). Exhausted after delivery attempt: 1
> caught: java.lang.NullPointerException
>
>
>
> Message History (complete message history is disabled)
>
>
> ---------------------------------------------------------------------------------------------------------------------------------------
>
> RouteId              ProcessorId
> Processor
> Elapsed (ms)
>
> [easybook-events   ] [easybook-events   ]
> [from[sjms://topic:kt.mix.easybook.events?durableSubscriptionId=tire-lodge-dev&]
> [        31]
>
>                 ...
>
> [easybook-events   ] [transacted1       ]
> [transacted
> ] [         0]
>
>
>
> Stacktrace
>
>
> ---------------------------------------------------------------------------------------------------------------------------------------
>
>
>
> java.lang.NullPointerException: null
>
>                 at
> org.apache.camel.cdi.transaction.TransactionalJtaTransactionPolicy.hasActiveTransaction(TransactionalJtaTransactionPolicy.java:114)
>
>                 at
> org.apache.camel.cdi.transaction.RequiredJtaTransactionPolicy.run(RequiredJtaTransactionPolicy.java:26)
>
>                 at
> org.apache.camel.jta.TransactionErrorHandler.doInTransactionTemplate(TransactionErrorHandler.java:186)
>
>                 at
> org.apache.camel.jta.TransactionErrorHandler.processInTransaction(TransactionErrorHandler.java:137)
>
>                 at
> org.apache.camel.jta.TransactionErrorHandler.process(TransactionErrorHandler.java:101)
>
>                 at
> org.apache.camel.jta.TransactionErrorHandler.process(TransactionErrorHandler.java:110)
>
>                 at
> org.apache.camel.processor.errorhandler.RedeliveryErrorHandler$SimpleTask.run(RedeliveryErrorHandler.java:404)
>
>                 at
> org.apache.camel.impl.engine.DefaultReactiveExecutor$Worker.schedule(DefaultReactiveExecutor.java:148)
>
>                 at
> org.apache.camel.impl.engine.DefaultReactiveExecutor.scheduleMain(DefaultReactiveExecutor.java:60)
>
>                 at
> org.apache.camel.processor.Pipeline.process(Pipeline.java:147)
>
>                 at
> org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:287)
>
>                 at
> org.apache.camel.impl.engine.DefaultAsyncProcessorAwaitManager.process(DefaultAsyncProcessorAwaitManager.java:83)
>
>                 at
> org.apache.camel.support.AsyncProcessorSupport.process(AsyncProcessorSupport.java:41)
>
>                 at
> org.apache.camel.component.sjms.consumer.InOnlyMessageHandler.handleMessage(InOnlyMessageHandler.java:53)
>
>                 at
> org.apache.camel.component.sjms.consumer.AbstractMessageHandler.onMessage(AbstractMessageHandler.java:81)
>
>                 at
> org.apache.activemq.artemis.jms.client.JMSMessageListenerWrapper.onMessage(JMSMessageListenerWrapper.java:110)
>
>                 at
> org.apache.activemq.artemis.core.client.impl.ClientConsumerImpl.callOnMessage(ClientConsumerImpl.java:1030)
>
>                 at
> org.apache.activemq.artemis.core.client.impl.ClientConsumerImpl.access$400(ClientConsumerImpl.java:49)
>
>                 at
> org.apache.activemq.artemis.core.client.impl.ClientConsumerImpl$Runner.run(ClientConsumerImpl.java:1153)
>
>                 at
> org.apache.activemq.artemis.utils.actors.OrderedExecutor.doTask(OrderedExecutor.java:42)
>
>                 at
> org.apache.activemq.artemis.utils.actors.OrderedExecutor.doTask(OrderedExecutor.java:31)
>
>                 at
> org.apache.activemq.artemis.utils.actors.ProcessorBase.executePendingTasks(ProcessorBase.java:65)
>
>                 at
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
>
>                 at
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
>
>                 at
> org.apache.activemq.artemis.utils.ActiveMQThreadFactory$1.run(ActiveMQThreadFactory.java:118)
>
>
>
> And then JMS message disappears from the topic.
>
> Note when using 3.4.5  message stays unacknowledged, I will stick to 3.4.5
> for now… Please let me know if you need any more info.
>
>
>
> Cheers,
>
> Dmitry
>
>
>
>
>
> *From:* Shultz, Dmitry
> *Sent:* Wednesday, September 2, 2020 9:17 PM
> *To:* Zheng Feng <zf...@redhat.com>>; users@camel.apache.org<ma...@camel.apache.org>
> *Subject:* Re: CDI + SJMS + transacted
>
>
>
> You are right, I forgot to specify transacted=true on the endpoint uri...
>
> To be exact I looked at all the places (even changed the AMQ connection
> URL :) except this probably because for some stupid reason wishfully
> thought the .transacted() on the route is enough for the component to set
> it true automagically.
>
> The interesting thing is that it worked (infinite redeliveries) - message
> was not committed to the broker (not lost) without the URI change just by
> using the JTA error handler builder (comes with CDI component). Now it
> works even with no redeliveries configured at all, but they are  never
> stopping (do there is some good automation already:)
> ------------------------------
>
> *From:* Zheng Feng <zf...@redhat.com>>
> *Sent:* 01 September 2020 23:09
> *To:* users@camel.apache.org<ma...@camel.apache.org> <us...@camel.apache.org>>
> *Subject:* Re: CDI + SJMS + transacted
>
>
>
> Yeah, TomEE could provide the "java:/TransactionManager" since it is a J2EE
> container. I wonder if you use the "transacted=true" option on the sjms
> consumer which will rollback the transaction if the router is failed.
>
>
> On Tue, Sep 1, 2020 at 4:35 AM Shultz, Dmitry <Dm...@kaltire.com>>
> wrote:
>
> > Thanks for the reply Zheng.
> >
> > I'm running very similar code in the TomEE and It doesn't fail on NPE.
> See
> > similar behaviour though:
> >
> > [Thread-0 (ActiveMQ-client] WARN  o.a.c.jta.TransactionErrorHandler -
> > Transaction rollback (0x30730302) redelivered(false) for (MessageId:
> > ID:9fd77209-ebc6-11ea-955a-1ee7171b8787 on ExchangeId:
> > ID-Kal030841-1598904862181-0-2) caught: test
> >
> > And after process restart the message is gone.
> >
> > I can confirm that when I use infinite re-delivery (the error handler
> > never exhausted) the message stays in the durable topic as forever even
> > after restart. So, I'm not sure if my expectation are correct i.e. does
> it
> > supposed to stay in the topic after error handler redeliveries are
> > exhausted?
> >
> > Cheers,
> > Dmitry
> >
> >
> > -----Original Message-----
> > From: Zheng Feng [mailto:zfeng@redhat.com<ma...@redhat.com> <zf...@redhat.com>>]
> > Sent: Sunday, August 30, 2020 8:58 AM
> > To: users@camel.apache.org<ma...@camel.apache.org>
> > Subject: Re: CDI + SJMS + transacted
> >
> > Hi Dmitry,
> >
> > It seems that SJMS [1]  currently only supports the use of internal JMS
> > Transactions. There is no support for the Camel Transaction Processor or
> > the Java Transaction API (JTA). Also if you want to use the JTA
> transaction
> > provided by the camel-cdi, the TransactionManager should be available via
> > JNDI "java:/TransactionManager". Then you are running the camel in the
> > standalone environment, and the transaction manager should be provided by
> > the third party implementation, such as Narayana ( you can find the jta
> > standalone example here [2]). The NPE I think should be fixed by
> > CAMEL-14918 [3], and I will try to backport it to the 3.4.x
> >
> > Regards,
> > Zheng Feng
> >
> > [1]
> >
> https://urldefense.com/v3/__https://camel.apache.org/components/latest/sjms-component.html__;!!LdWlNaMnLCM!OJ-X6YfRy0exjKJ8PNWy-d5aHbD6mgnBfTRZXXKak6kEojLVTmcKwcF4puKY9P1BTwqO$<https://urldefense.com/v3/__https:/camel.apache.org/components/latest/sjms-component.html__;!!LdWlNaMnLCM!OJ-X6YfRy0exjKJ8PNWy-d5aHbD6mgnBfTRZXXKak6kEojLVTmcKwcF4puKY9P1BTwqO$>
> <https://urldefense.com/v3/__https:/camel.apache.org/components/latest/sjms-component.html__;!!LdWlNaMnLCM!OJ-X6YfRy0exjKJ8PNWy-d5aHbD6mgnBfTRZXXKak6kEojLVTmcKwcF4puKY9P1BTwqO$>
> > [2]
> >
> https://urldefense.com/v3/__https://github.com/jbosstm/quickstart/tree/master/jta-1_2-standalone__;!!LdWlNaMnLCM!OJ-X6YfRy0exjKJ8PNWy-d5aHbD6mgnBfTRZXXKak6kEojLVTmcKwcF4puKY9Py3UShj$<https://urldefense.com/v3/__https:/github.com/jbosstm/quickstart/tree/master/jta-1_2-standalone__;!!LdWlNaMnLCM!OJ-X6YfRy0exjKJ8PNWy-d5aHbD6mgnBfTRZXXKak6kEojLVTmcKwcF4puKY9Py3UShj$>
> <https://urldefense.com/v3/__https:/github.com/jbosstm/quickstart/tree/master/jta-1_2-standalone__;!!LdWlNaMnLCM!OJ-X6YfRy0exjKJ8PNWy-d5aHbD6mgnBfTRZXXKak6kEojLVTmcKwcF4puKY9Py3UShj$>
> > [3]
> >
> >
> https://urldefense.com/v3/__https://github.com/apache/camel/commit/4421b2bba294dd8828621684c7670f78d811ecd8*diff-773b20d331dac13fb17acfa0f58ac01f__;Iw!!LdWlNaMnLCM!OJ-X6YfRy0exjKJ8PNWy-d5aHbD6mgnBfTRZXXKak6kEojLVTmcKwcF4puKY9F_CLTBw$<https://urldefense.com/v3/__https:/github.com/apache/camel/commit/4421b2bba294dd8828621684c7670f78d811ecd8*diff-773b20d331dac13fb17acfa0f58ac01f__;Iw!!LdWlNaMnLCM!OJ-X6YfRy0exjKJ8PNWy-d5aHbD6mgnBfTRZXXKak6kEojLVTmcKwcF4puKY9F_CLTBw$>
> <https://urldefense.com/v3/__https:/github.com/apache/camel/commit/4421b2bba294dd8828621684c7670f78d811ecd8*diff-773b20d331dac13fb17acfa0f58ac01f__;Iw!!LdWlNaMnLCM!OJ-X6YfRy0exjKJ8PNWy-d5aHbD6mgnBfTRZXXKak6kEojLVTmcKwcF4puKY9F_CLTBw$>
> >
> > On Sat, Aug 29, 2020 at 5:50 AM Shultz, Dmitry <
> Dmitry_Shultz@kaltire.com<ma...@kaltire.com>>
> > wrote:
> >
> > > Hi All,
> > >
> > > I'm probably doing something  wrong/stupid, but I can't get the sjms
> > > (recent Camel, but same true for 2.25.2) to leave failed messages in
> > > the JMS topic (AMQ Artemis) after exception.
> > > This is what logged:
> > >
> > > [ctiveMQ-client-global-threads)] TransactionErrorHandler        WARN
> > > Transaction rollback (0x5cd1283) redelivered(false) for (MessageId:
> > > ID:bbaa590d-e975-11ea-9ad0-6c4b902fc0e1 on ExchangeId:
> > > ID-Kal030841-1598650245838-0-1) caught: null
> > > [ctiveMQ-client-global-threads)] TransactionErrorHandler        WARN
> > > Transaction rollback (0x5cd1283) redelivered(false) for (MessageId:
> > > ID:bbaa590d-e975-11ea-9ad0-6c4b902fc0e1 on ExchangeId:
> > > ID-Kal030841-1598650245838-0-1) caught: null
> > > [ctiveMQ-client-global-threads)] TransactionErrorHandler        WARN
> > > Transaction rollback (0x5cd1283) redelivered(false) for (MessageId:
> > > ID:bbaa590d-e975-11ea-9ad0-6c4b902fc0e1 on ExchangeId:
> > > ID-Kal030841-1598650245838-0-1) caught: null
> > > [ctiveMQ-client-global-threads)] TransactionErrorHandler        ERROR
> > > Failed delivery for (MessageId:
> > > ID:bbaa590d-e975-11ea-9ad0-6c4b902fc0e1 on
> > > ExchangeId: ID-Kal030841-1598650245838-0-1). Exhausted after delivery
> > > attempt: 3 caught: java.lang.NullPointerException
> > >
> > > Message History (complete message history is disabled)
> > >
> > >
> >
> ---------------------------------------------------------------------------------------------------------------------------------------
> > > RouteId              ProcessorId          Processor
> > >                                                 Elapsed (ms)
> > > [route1            ] [route1            ]
> > > [from[sjms://topic:topic:test?durableSubscriptionId=dmitr] [      1999]
> > >                 ...
> > > [route1            ] [transacted1       ] [transacted
> > >                                               ] [         0]
> > >
> > > Stacktrace
> > >
> > > ----------------------------------------------------------------------
> > > -----------------------------------------------------------------
> > >
> > > java.lang.NullPointerException: null
> > >                 at
> > > org.apache.camel.cdi.transaction.TransactionalJtaTransactionPolicy.has
> > > ActiveTransaction(TransactionalJtaTransactionPolicy.java:105)
> > > ~[camel-cdi-3.4.3.jar:3.4.3]
> > >                 at
> > > org.apache.camel.cdi.transaction.RequiredJtaTransactionPolicy.run(Requ
> > > iredJtaTransactionPolicy.java:26)
> > > ~[camel-cdi-3.4.3.jar:3.4.3]
> > >                 at
> > > org.apache.camel.jta.TransactionErrorHandler.doInTransactionTemplate(T
> > > ransactionErrorHandler.java:193)
> > > ~[camel-jta-3.4.3.jar:3.4.3]
> > >                 at
> > > org.apache.camel.jta.TransactionErrorHandler.processInTransaction(Tran
> > > sactionErrorHandler.java:144)
> > > ~[camel-jta-3.4.3.jar:3.4.3]
> > >                 at
> > > org.apache.camel.jta.TransactionErrorHandler.process(TransactionErrorH
> > > andler.java:108)
> > > ~[camel-jta-3.4.3.jar:3.4.3]
> > >                 at
> > > org.apache.camel.jta.TransactionErrorHandler.process(TransactionErrorH
> > > andler.java:117)
> > > ~[camel-jta-3.4.3.jar:3.4.3]
> > >                 at
> > > org.apache.camel.processor.errorhandler.RedeliveryErrorHandler$Redeliv
> > > eryTask.redeliver(RedeliveryErrorHandler.java:766)
> > > ~[camel-base-3.4.3.jar:3.4.3]
> > >                 at
> > > org.apache.camel.impl.engine.DefaultReactiveExecutor$Worker.schedule(D
> > > efaultReactiveExecutor.java:148)
> > > ~[camel-base-3.4.3.jar:3.4.3]
> > >                 at
> > > org.apache.camel.impl.engine.DefaultReactiveExecutor.scheduleMain(Defa
> > > ultReactiveExecutor.java:60)
> > > ~[camel-base-3.4.3.jar:3.4.3]
> > >                 at
> > > org.apache.camel.processor.Pipeline.process(Pipeline.java:147)
> > > ~[camel-base-3.4.3.jar:3.4.3]
> > >                 at
> > > org.apache.camel.processor.CamelInternalProcessor.process(CamelInterna
> > > lProcessor.java:286)
> > > ~[camel-base-3.4.3.jar:3.4.3]
> > >                 at
> > > org.apache.camel.impl.engine.DefaultAsyncProcessorAwaitManager.process
> > > (DefaultAsyncProcessorAwaitManager.java:83)
> > > ~[camel-base-3.4.3.jar:3.4.3]
> > >                 at
> > > org.apache.camel.support.AsyncProcessorSupport.process(AsyncProcessorS
> > > upport.java:40)
> > > ~[camel-support-3.4.3.jar:3.4.3]
> > >                 at
> > > org.apache.camel.component.sjms.consumer.InOnlyMessageHandler.handleMe
> > > ssage(InOnlyMessageHandler.java:52)
> > > ~[camel-sjms-3.4.3.jar:3.4.3]
> > >                 at
> > > org.apache.camel.component.sjms.consumer.AbstractMessageHandler.onMess
> > > age(AbstractMessageHandler.java:81)
> > > ~[camel-sjms-3.4.3.jar:3.4.3]
> > >                 at
> > > org.apache.activemq.artemis.jms.client.JMSMessageListenerWrapper.onMes
> > > sage(JMSMessageListenerWrapper.java:110)
> > > ~[artemis-jms-client-2.14.0.jar:2.14.0]
> > >                 at
> > > org.apache.activemq.artemis.core.client.impl.ClientConsumerImpl.callOn
> > > Message(ClientConsumerImpl.java:1030)
> > > ~[artemis-core-client-2.14.0.jar:2.14.0]
> > >
> > > So, it looks like rollback is kicked off, but when I restart the
> > > process message is gone from the JMS topic.
> > >
> > > Sample reproducer  (generated using
> > > -DarchetypeArtifactId=camel-archetype-cdi as described here
> > > https://urldefense.com/v3/__https://camel.apache.org/components/latest<https://urldefense.com/v3/__https:/camel.apache.org/components/latest>
> <https://urldefense.com/v3/__https:/camel.apache.org/components/latest>
> > > /others/cdi.html__;!!LdWlNaMnLCM!OJ-X6YfRy0exjKJ8PNWy-d5aHbD6mgnBfTRZX
> > > XKak6kEojLVTmcKwcF4puKY9NnrgwcA$  ) is here
> > > https://urldefense.com/v3/__https://github.com/zeppelinux/CamelCDISjms<https://urldefense.com/v3/__https:/github.com/zeppelinux/CamelCDISjms>
> <https://urldefense.com/v3/__https:/github.com/zeppelinux/CamelCDISjms>
> > > Test__;!!LdWlNaMnLCM!OJ-X6YfRy0exjKJ8PNWy-d5aHbD6mgnBfTRZXXKak6kEojLVT
> > > mcKwcF4puKY9HBU5Opk$
> > > Please  have a look.
> > >
> > > Cheers,
> > > Dmitry
> > >
> >
>

Re: CDI + SJMS + transacted

Posted by Romain Manni-Bucau <rm...@gmail.com>.
As mentionned previously Camel needs to be patched.
The easiest is a cdi extension replacing RequiredJtaTransactionPolicy by a
custom impl (likely using @Resource TransactionManager txMgr instead of the
lookup, should be trivial I think).

Side note: this logic likely needs to move in a camel-ee module cause cdi
module seems inaccurate (in terms of dependencies and usage and it already
created troubles by the past even if the openjpa code could mitigate it).

Romain Manni-Bucau
@rmannibucau <https://twitter.com/rmannibucau> |  Blog
<https://rmannibucau.metawerx.net/> | Old Blog
<http://rmannibucau.wordpress.com> | Github <https://github.com/rmannibucau> |
LinkedIn <https://www.linkedin.com/in/rmannibucau> | Book
<https://www.packtpub.com/application-development/java-ee-8-high-performance>


Le mer. 9 sept. 2020 à 19:42, Shultz, Dmitry <Dm...@kaltire.com> a
écrit :

> Romain,
>
>
>
> My current Hibernate is 4.2.21.Final,  here are the different outcomes I
> see after I applied your suggestion to the persistence.xml:
>
>
>
> 1.       name="hibernate.transaction.jta.platform"
> value="org.apache.openejb.hibernate.OpenEJBJtaPlatform2"
>
>
>
> getting (as expected) java.lang.ClassNotFoundException:
> org.hibernate.engine.transaction.jta.platform.internal.AbstractJtaPlatform
>
>
>
> 2.       name="hibernate.transaction.jta.platform"
> value="org.apache.openejb.hibernate.OpenEJBJtaPlatform"
>
> getting same WARN  o.a.c.c.t.TransactionalJtaTransactionPolicy - Could not
> find the transaction manager through java:/TransactionManager when Camel
> boots
>
>
>
> 3.       name="hibernate.transaction.manager_lookup_class"
> value="org.apache.openejb.hibernate.TransactionManagerLookup"
>
> getting same WARN  o.a.c.c.t.TransactionalJtaTransactionPolicy - Could not
> find the transaction manager through java:/TransactionManager when Camel
> boots
>
>
>
> In  2 & 3 the persistence unit starts successfully, it’s only when Camel
> tries to find the TransactionManager it logs the warning.
>
>
>
> I tried to upgrade Hibernate to 5.4.20.Final but it doesn’t seem to be
> compatible with my current TomEE 7.0.6  and I can’t easily update it at the
> moment L
>
>
>
>                 Caused by: java.lang.ClassNotFoundException:
> org.hibernate.ejb.HibernatePersistence
>
>                                 at
> org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1364)
>
>                                 at
> org.apache.tomee.catalina.TomEEWebappClassLoader.loadClass(TomEEWebappClassLoader.java:208)
>
>                                 at
> org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1185)
>
>                                 at
> org.apache.openejb.assembler.classic.EntityManagerFactoryCallable.call(EntityManagerFactoryCallable.java:84)
>
>                                 at
> org.apache.openejb.assembler.classic.ReloadableEntityManagerFactory.createDelegate(ReloadableEntityManagerFactory.java:134)
>
>
>
> Is there anything else I can try?
>
>
>
> Cheers,
>
> Dmitry
>
>
>
>
>
> *From:* Romain Manni-Bucau [mailto:rmannibucau@gmail.com]
> *Sent:* Wednesday, September 9, 2020 12:56 AM
> *To:* users@camel.apache.org
> *Cc:* Shultz, Dmitry <Dm...@kaltire.com>
> *Subject:* Re: CDI + SJMS + transacted
>
>
>
> In hibernate configuration, you can try to force the transaction manager
> lokup
> hibernate.transaction.jta.platform=org.apache.openejb.hibernate.OpenEJBJtaPlatform2 (if
> you use older versions with the older hibernate key just drop the "2" at
> the end of the platform and if you use a very old hibernate version
> (manager_lookup_class), then use
> org.apache.openejb.hibernate.TransactionManagerLookup)
>
>
> Romain Manni-Bucau
> @rmannibucau [twitter.com]
> <https://urldefense.com/v3/__https:/twitter.com/rmannibucau__;!!LdWlNaMnLCM!L4bACvX05-Lb8u2ekiHyS3J3BxvhaVb4D1pnwM4ItphCC4flnrEsTsv-xjwZfoi1Cx-a$>
> |  Blog [rmannibucau.metawerx.net]
> <https://urldefense.com/v3/__https:/rmannibucau.metawerx.net/__;!!LdWlNaMnLCM!L4bACvX05-Lb8u2ekiHyS3J3BxvhaVb4D1pnwM4ItphCC4flnrEsTsv-xjwZfsV0FRfY$> |
> Old Blog [rmannibucau.wordpress.com]
> <https://urldefense.com/v3/__http:/rmannibucau.wordpress.com__;!!LdWlNaMnLCM!L4bACvX05-Lb8u2ekiHyS3J3BxvhaVb4D1pnwM4ItphCC4flnrEsTsv-xjwZfvdkhBJC$>
> | Github [github.com]
> <https://urldefense.com/v3/__https:/github.com/rmannibucau__;!!LdWlNaMnLCM!L4bACvX05-Lb8u2ekiHyS3J3BxvhaVb4D1pnwM4ItphCC4flnrEsTsv-xjwZflUkiucl$> |
> LinkedIn [linkedin.com]
> <https://urldefense.com/v3/__https:/www.linkedin.com/in/rmannibucau__;!!LdWlNaMnLCM!L4bACvX05-Lb8u2ekiHyS3J3BxvhaVb4D1pnwM4ItphCC4flnrEsTsv-xjwZfiS4xUan$> |
> Book [packtpub.com]
> <https://urldefense.com/v3/__https:/www.packtpub.com/application-development/java-ee-8-high-performance__;!!LdWlNaMnLCM!L4bACvX05-Lb8u2ekiHyS3J3BxvhaVb4D1pnwM4ItphCC4flnrEsTsv-xjwZfoOPIGUi$>
>
>
>
>
>
> Le mer. 9 sept. 2020 à 09:42, Zheng Feng <zf...@redhat.com> a écrit :
>
> Hi Dmitry,
>
> It seems that the TransactionManager can not be accessed via
> "java:/TransactionManager" and I am not an expert of TomEE also I am not
> sure if there is a way to set the transaction manager jndi name in the
> configuration file ?
>
> Regards,
> Zheng Feng
>
> On Wed, Sep 9, 2020 at 3:18 AM Shultz, Dmitry <Dm...@kaltire.com>
> wrote:
>
> > Zheng,
> >
> >
> >
> > I’m still having problem and it seems to behave differently running on
> the
> > same TomEE version (7.0.6) but different Camel 3+ versions.
> >
> >
> >
> > To reproduce  I corrupted the query (handled by Deltaspike Data Module
> > repository).
> >
> >
> >
> > When it runs (fails) with Camel 3.4.5 it behaves as expected the first
> > time, but when it tries to redeliver the same JMS message it complains
> with
> > ‘Cannot join transaction: do not override
> > hibernate.transaction.factory_class’. Here is the full stack for
> redelivery:
> >
> >
> >
> > 2020-09-08 11:07:56.428 [Thread-0 (ActiveMQ-client] WARN
> > c.k.m.c.DeadLetterChannelBuilderProducer - redelivery attempt 1 to
> > direct://process
> >
> > 2020-09-08 11:07:56.440 [Thread-0 (ActiveMQ-client] WARN
> > o.h.ejb.AbstractEntityManagerImpl - HHH000326: Cannot join transaction:
> do
> > not override hibernate.transaction.factory_class
> >
> > 2020-09-08 11:07:56.442 [Thread-0 (ActiveMQ-client] ERROR
> > c.k.m.c.DeadLetterChannelBuilderProducer - processing failed with:
> >
> > javax.persistence.TransactionRequiredException: No active JTA transaction
> > on joinTransaction call
> >
> >                 at
> >
> org.hibernate.ejb.AbstractEntityManagerImpl.joinTransaction(AbstractEntityManagerImpl.java:1233)
> >
> >                 at
> >
> org.hibernate.ejb.AbstractEntityManagerImpl.joinTransaction(AbstractEntityManagerImpl.java:1183)
> >
> >                 at
> >
> org.apache.deltaspike.jpa.impl.transaction.BeanManagedUserTransactionStrategy.beforeProceed(BeanManagedUserTransactionStrategy.java:171)
> >
> >                 at
> >
> org.apache.deltaspike.jpa.impl.transaction.EnvironmentAwareTransactionStrategy.beforeProceed(EnvironmentAwareTransactionStrategy.java:109)
> >
> >                 at
> >
> org.apache.deltaspike.jpa.impl.transaction.ResourceLocalTransactionStrategy.execute(ResourceLocalTransactionStrategy.java:127)
> >
> >                 at
> >
> org.apache.deltaspike.jpa.impl.transaction.TransactionalInterceptor.executeInTransaction(TransactionalInterceptor.java:57)
> >
> >                 at sun.reflect.NativeMethodAccessorImpl.invoke0(Native
> > Method)
> >
> >                 at
> >
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
> >
> >                 at
> >
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> >
> >                 at java.lang.reflect.Method.invoke(Method.java:498)
> >
> >                 at
> >
> org.apache.webbeans.component.InterceptorBean.intercept(InterceptorBean.java:136)
> >
> >                 at
> >
> org.apache.webbeans.intercept.InterceptorInvocationContext.proceed(InterceptorInvocationContext.java:63)
> >
> >                 at
> >
> org.apache.webbeans.intercept.DefaultInterceptorHandler.invoke(DefaultInterceptorHandler.java:139)
> >
> >                 at
> >
> com.kaltire.mix.tirelodge.camel.beans.EventProcessor$$OwbInterceptProxy0.process(com/kaltire/mix/tirelodge/camel/beans/EventProcessor.java)
> >
> >                 at sun.reflect.NativeMethodAccessorImpl.invoke0(Native
> > Method)
> >
> >                 at
> >
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
> >
> >                 at
> >
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> >
> >                 at java.lang.reflect.Method.invoke(Method.java:498)
> >
> >                 at
> >
> org.apache.camel.support.ObjectHelper.invokeMethodSafe(ObjectHelper.java:209)
> >
> >                 at
> > org.apache.camel.component.bean.MethodInfo.invoke(MethodInfo.java:421)
> >
> >                 at
> >
> org.apache.camel.component.bean.MethodInfo$1.doProceed(MethodInfo.java:242)
> >
> >                 at
> > org.apache.camel.component.bean.MethodInfo$1.proceed(MethodInfo.java:213)
> >
> >                 at
> >
> org.apache.camel.component.bean.AbstractBeanProcessor.process(AbstractBeanProcessor.java:154)
> >
> >                 at
> >
> org.apache.camel.component.bean.BeanProcessor.process(BeanProcessor.java:56)
> >
> >                 at
> >
> org.apache.camel.management.DefaultInstrumentationProcessor.process(DefaultInstrumentationProcessor.java:91)
> >
> >                 at
> >
> org.apache.camel.processor.errorhandler.RedeliveryErrorHandler$RedeliveryTask.redeliver(RedeliveryErrorHandler.java:766)
> >
> >                 at
> >
> org.apache.camel.impl.engine.DefaultReactiveExecutor$Worker.schedule(DefaultReactiveExecutor.java:148)
> >
> >                 at
> >
> org.apache.camel.impl.engine.DefaultReactiveExecutor.scheduleSync(DefaultReactiveExecutor.java:65)
> >
> >                 at
> >
> org.apache.camel.processor.errorhandler.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:175)
> >
> >                 at
> >
> org.apache.camel.impl.engine.DefaultAsyncProcessorAwaitManager.process(DefaultAsyncProcessorAwaitManager.java:83)
> >
> >                 at
> >
> org.apache.camel.processor.errorhandler.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:158)
> >
> >                 at
> >
> org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:260)
> >
> >                 at
> >
> org.apache.camel.processor.ChoiceProcessor.process(ChoiceProcessor.java:115)
> >
> >                 at
> >
> org.apache.camel.impl.engine.DefaultAsyncProcessorAwaitManager.process(DefaultAsyncProcessorAwaitManager.java:83)
> >
> >                 at
> >
> org.apache.camel.support.AsyncProcessorSupport.process(AsyncProcessorSupport.java:40)
> >
> >                 at
> >
> org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:260)
> >
> >                 at
> >
> org.apache.camel.impl.engine.DefaultAsyncProcessorAwaitManager.process(DefaultAsyncProcessorAwaitManager.java:83)
> >
> >                 at
> >
> org.apache.camel.support.AsyncProcessorSupport.process(AsyncProcessorSupport.java:40)
> >
> >                 at
> >
> org.apache.camel.jta.TransactionErrorHandler.processByErrorHandler(TransactionErrorHandler.java:242)
> >
> >                 at
> >
> org.apache.camel.jta.TransactionErrorHandler$1.run(TransactionErrorHandler.java:203)
> >
> >                 at
> >
> org.apache.camel.cdi.transaction.TransactionalJtaTransactionPolicy.runWithTransaction(TransactionalJtaTransactionPolicy.java:51)
> >
> >                 at
> >
> org.apache.camel.cdi.transaction.RequiredJtaTransactionPolicy.run(RequiredJtaTransactionPolicy.java:26)
> >
> >                 at
> >
> org.apache.camel.jta.TransactionErrorHandler.doInTransactionTemplate(TransactionErrorHandler.java:193)
> >
> >                 at
> >
> org.apache.camel.jta.TransactionErrorHandler.processInTransaction(TransactionErrorHandler.java:144)
> >
> >                 at
> >
> org.apache.camel.jta.TransactionErrorHandler.process(TransactionErrorHandler.java:108)
> >
> >                 at
> >
> org.apache.camel.jta.TransactionErrorHandler.process(TransactionErrorHandler.java:117)
> >
> >                 at
> >
> org.apache.camel.processor.errorhandler.RedeliveryErrorHandler$SimpleTask.run(RedeliveryErrorHandler.java:395)
> >
> >                 at
> >
> org.apache.camel.impl.engine.DefaultReactiveExecutor$Worker.schedule(DefaultReactiveExecutor.java:148)
> >
> >                 at
> >
> org.apache.camel.impl.engine.DefaultReactiveExecutor.scheduleSync(DefaultReactiveExecutor.java:65)
> >
> >                 at
> >
> org.apache.camel.processor.errorhandler.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:175)
> >
> >                 at
> >
> org.apache.camel.impl.engine.DefaultAsyncProcessorAwaitManager.process(DefaultAsyncProcessorAwaitManager.java:83)
> >
> >                 at
> >
> org.apache.camel.processor.errorhandler.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:158)
> >
> >                 at
> >
> org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:260)
> >
> >                 at
> > org.apache.camel.processor.Pipeline$PipelineTask.run(Pipeline.java:90)
> >
> >                 at
> >
> org.apache.camel.impl.engine.DefaultReactiveExecutor$Worker.schedule(DefaultReactiveExecutor.java:148)
> >
> >                 at
> >
> org.apache.camel.impl.engine.DefaultReactiveExecutor.scheduleSync(DefaultReactiveExecutor.java:65)
> >
> >                 at
> > org.apache.camel.processor.Pipeline.process(Pipeline.java:145)
> >
> >                 at
> >
> org.apache.camel.impl.engine.DefaultAsyncProcessorAwaitManager.process(DefaultAsyncProcessorAwaitManager.java:83)
> >
> >                 at
> >
> org.apache.camel.support.AsyncProcessorSupport.process(AsyncProcessorSupport.java:40)
> >
> >                 at
> >
> org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:260)
> >
> >                 at
> >
> org.apache.camel.component.direct.DirectProducer.process(DirectProducer.java:66)
> >
> >                 at
> > org.apache.camel.processor.SendProcessor.process(SendProcessor.java:168)
> >
> >                 at
> >
> org.apache.camel.impl.engine.DefaultAsyncProcessorAwaitManager.process(DefaultAsyncProcessorAwaitManager.java:83)
> >
> >                 at
> >
> org.apache.camel.support.AsyncProcessorSupport.process(AsyncProcessorSupport.java:40)
> >
> >                 at
> >
> org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:260)
> >
> >                 at
> > org.apache.camel.processor.Pipeline$PipelineTask.run(Pipeline.java:90)
> >
> >                 at
> >
> org.apache.camel.impl.engine.DefaultReactiveExecutor$Worker.schedule(DefaultReactiveExecutor.java:148)
> >
> >                 at
> >
> org.apache.camel.impl.engine.DefaultReactiveExecutor.scheduleSync(DefaultReactiveExecutor.java:65)
> >
> >                 at
> > org.apache.camel.processor.Pipeline.process(Pipeline.java:145)
> >
> >                 at
> >
> org.apache.camel.impl.engine.DefaultAsyncProcessorAwaitManager.process(DefaultAsyncProcessorAwaitManager.java:83)
> >
> >                 at
> >
> org.apache.camel.support.AsyncProcessorSupport.process(AsyncProcessorSupport.java:40)
> >
> >                 at
> >
> org.apache.camel.jta.TransactionErrorHandler.processByErrorHandler(TransactionErrorHandler.java:242)
> >
> >                 at
> >
> org.apache.camel.jta.TransactionErrorHandler$1.run(TransactionErrorHandler.java:203)
> >
> >                 at
> >
> org.apache.camel.cdi.transaction.TransactionalJtaTransactionPolicy.runWithTransaction(TransactionalJtaTransactionPolicy.java:51)
> >
> >                 at
> >
> org.apache.camel.cdi.transaction.RequiredJtaTransactionPolicy.run(RequiredJtaTransactionPolicy.java:26)
> >
> >                 at
> >
> org.apache.camel.jta.TransactionErrorHandler.doInTransactionTemplate(TransactionErrorHandler.java:193)
> >
> >                 at
> >
> org.apache.camel.jta.TransactionErrorHandler.processInTransaction(TransactionErrorHandler.java:144)
> >
> >                 at
> >
> org.apache.camel.jta.TransactionErrorHandler.process(TransactionErrorHandler.java:108)
> >
> >                 at
> >
> org.apache.camel.jta.TransactionErrorHandler.process(TransactionErrorHandler.java:117)
> >
> >                 at
> >
> org.apache.camel.processor.errorhandler.RedeliveryErrorHandler$SimpleTask.run(RedeliveryErrorHandler.java:395)
> >
> >                 at
> >
> org.apache.camel.impl.engine.DefaultReactiveExecutor$Worker.schedule(DefaultReactiveExecutor.java:148)
> >
> >                 at
> >
> org.apache.camel.impl.engine.DefaultReactiveExecutor.scheduleMain(DefaultReactiveExecutor.java:60)
> >
> >                 at
> > org.apache.camel.processor.Pipeline.process(Pipeline.java:147)
> >
> >                 at
> >
> org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:286)
> >
> >                 at
> >
> org.apache.camel.impl.engine.DefaultAsyncProcessorAwaitManager.process(DefaultAsyncProcessorAwaitManager.java:83)
> >
> >                 at
> >
> org.apache.camel.support.AsyncProcessorSupport.process(AsyncProcessorSupport.java:40)
> >
> >                 at
> >
> org.apache.camel.component.sjms.consumer.InOnlyMessageHandler.handleMessage(InOnlyMessageHandler.java:52)
> >
> >                 at
> >
> org.apache.camel.component.sjms.consumer.AbstractMessageHandler.onMessage(AbstractMessageHandler.java:81)
> >
> >                 at
> >
> org.apache.activemq.artemis.jms.client.JMSMessageListenerWrapper.onMessage(JMSMessageListenerWrapper.java:110)
> >
> >                 at
> >
> org.apache.activemq.artemis.core.client.impl.ClientConsumerImpl.callOnMessage(ClientConsumerImpl.java:1030)
> >
> >                 at
> >
> org.apache.activemq.artemis.core.client.impl.ClientConsumerImpl.access$400(ClientConsumerImpl.java:49)
> >
> >                 at
> >
> org.apache.activemq.artemis.core.client.impl.ClientConsumerImpl$Runner.run(ClientConsumerImpl.java:1153)
> >
> >                 at
> >
> org.apache.activemq.artemis.utils.actors.OrderedExecutor.doTask(OrderedExecutor.java:42)
> >
> >                 at
> >
> org.apache.activemq.artemis.utils.actors.OrderedExecutor.doTask(OrderedExecutor.java:31)
> >
> >                 at
> >
> org.apache.activemq.artemis.utils.actors.ProcessorBase.executePendingTasks(ProcessorBase.java:65)
> >
> >                 at
> >
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
> >
> >                 at
> >
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
> >
> >                 at
> >
> org.apache.activemq.artemis.utils.ActiveMQThreadFactory$1.run(ActiveMQThreadFactory.java:118)
> >
> >                 Suppressed: javax.persistence.PersistenceException:
> > org.hibernate.exception.SQLGrammarException: could not execute statement
> >
> >                                 at
> >
> org.hibernate.ejb.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1387)
> >
> >                                 at
> >
> org.hibernate.ejb.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1310)
> >
> >                                 at
> >
> org.hibernate.ejb.AbstractEntityManagerImpl.throwPersistenceException(AbstractEntityManagerImpl.java:1397)
> >
> >                                 at
> >
> org.hibernate.ejb.AbstractQueryImpl.executeUpdate(AbstractQueryImpl.java:111)
> >
> >                                 at
> >
> org.apache.deltaspike.data.impl.builder.result.QueryProcessorFactory$ExecuteUpdateQueryProcessor.executeQuery(QueryProcessorFactory.java:192)
> >
> >                                 at
> >
> org.apache.deltaspike.data.impl.handler.CdiQueryInvocationContext.executeQuery(CdiQueryInvocationContext.java:253)
> >
> >                                 at
> >
> org.apache.deltaspike.data.impl.builder.AnnotatedQueryBuilder.execute(AnnotatedQueryBuilder.java:51)
> >
> >                                 at
> >
> org.apache.deltaspike.data.impl.builder.QueryBuilder.executeQuery(QueryBuilder.java:57)
> >
> >                                 at
> >
> org.apache.deltaspike.data.impl.builder.AnnotatedQueryBuilder$$OwbNormalScopeProxy0.executeQuery(org/apache/deltaspike/data/impl/builder/AnnotatedQueryBuilder.java)
> >
> >                                 at
> >
> org.apache.deltaspike.data.impl.tx.TransactionalQueryRunner$1.proceed(TransactionalQueryRunner.java:73)
> >
> >                                 at
> >
> org.apache.deltaspike.jpa.impl.transaction.ResourceLocalTransactionStrategy.execute(ResourceLocalTransactionStrategy.java:130)
> >
> >                                 at
> >
> org.apache.deltaspike.data.impl.tx.TransactionalQueryRunner.executeTransactional(TransactionalQueryRunner.java:68)
> >
> >                                 at
> >
> org.apache.deltaspike.data.impl.tx.TransactionalQueryRunner.executeQuery(TransactionalQueryRunner.java:50)
> >
> >                                 at
> >
> org.apache.deltaspike.data.impl.tx.TransactionalQueryRunner$$OwbNormalScopeProxy0.executeQuery(org/apache/deltaspike/data/impl/tx/TransactionalQueryRunner.java)
> >
> >                                 at
> >
> org.apache.deltaspike.data.impl.handler.QueryHandler.process(QueryHandler.java:151)
> >
> >                                 at
> >
> org.apache.deltaspike.data.impl.handler.QueryHandler$1.proceed(QueryHandler.java:119)
> >
> >                                 at
> >
> org.apache.deltaspike.jpa.impl.transaction.ResourceLocalTransactionStrategy.execute(ResourceLocalTransactionStrategy.java:130)
> >
> >                                 at
> >
> org.apache.deltaspike.data.impl.handler.QueryHandler.invoke(QueryHandler.java:111)
> >
> >                                 at
> >
> org.apache.deltaspike.data.impl.handler.QueryHandler$$OwbNormalScopeProxy0.invoke(org/apache/deltaspike/data/impl/handler/QueryHandler.java)
> >
> >                                 at
> >
> org.apache.deltaspike.proxy.spi.invocation.DeltaSpikeProxyInvocationHandler.proceed(DeltaSpikeProxyInvocationHandler.java:97)
> >
> >                                 at
> >
> org.apache.deltaspike.proxy.spi.invocation.DeltaSpikeProxyInvocationContext.proceed(DeltaSpikeProxyInvocationContext.java:101)
> >
> >                                 at
> >
> org.apache.deltaspike.jpa.impl.transaction.ResourceLocalTransactionStrategy.execute(ResourceLocalTransactionStrategy.java:130)
> >
> >                                 at
> >
> org.apache.deltaspike.jpa.impl.transaction.TransactionalInterceptor.executeInTransaction(TransactionalInterceptor.java:57)
> >
> >                                 at
> > sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> >
> >                                 at
> >
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
> >
> >                                 at
> >
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> >
> >                                 at
> > java.lang.reflect.Method.invoke(Method.java:498)
> >
> >                                 at
> >
> org.apache.webbeans.component.InterceptorBean.intercept(InterceptorBean.java:136)
> >
> >                                 at
> >
> org.apache.deltaspike.proxy.spi.invocation.DeltaSpikeProxyInvocationContext.proceed(DeltaSpikeProxyInvocationContext.java:80)
> >
> >                                 at
> >
> org.apache.deltaspike.proxy.spi.invocation.DeltaSpikeProxyInvocationHandler.invoke(DeltaSpikeProxyInvocationHandler.java:63)
> >
> >                                 at
> >
> org.apache.deltaspike.proxy.spi.invocation.DeltaSpikeProxyInvocationHandler$$OwbNormalScopeProxy0.invoke(org/apache/deltaspike/proxy/spi/invocation/DeltaSpikeProxyInvocationHandler.java)
> >
> >                                 at
> >
> com.kaltire.mix.tirelodge.dao.StorageRecordRepository$$DSPartialBeanProxy.updateStorageRecord(Unknown
> > Source)
> >
> >                                 at
> >
> com.kaltire.mix.tirelodge.camel.beans.EventProcessor.process(EventProcessor.java:96)
> >
> >                                 at
> > sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> >
> >                                 at
> >
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
> >
> >                                 at
> >
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> >
> >                                 at
> > java.lang.reflect.Method.invoke(Method.java:498)
> >
> >                                 at
> >
> org.apache.webbeans.intercept.AbstractInvocationContext.directProceed(AbstractInvocationContext.java:113)
> >
> >                                 at
> >
> org.apache.webbeans.intercept.AbstractInvocationContext.proceed(AbstractInvocationContext.java:106)
> >
> >                                 at
> >
> org.apache.webbeans.intercept.InterceptorInvocationContext.proceed(InterceptorInvocationContext.java:67)
> >
> >                                 at
> >
> org.apache.deltaspike.jpa.impl.transaction.ResourceLocalTransactionStrategy.execute(ResourceLocalTransactionStrategy.java:130)
> >
> >                                 at
> >
> org.apache.deltaspike.jpa.impl.transaction.TransactionalInterceptor.executeInTransaction(TransactionalInterceptor.java:57)
> >
> >                                 at
> > sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> >
> >                                 at
> >
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
> >
> >                                 at
> >
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> >
> >                                 at
> > java.lang.reflect.Method.invoke(Method.java:498)
> >
> >                                 at
> >
> org.apache.webbeans.component.InterceptorBean.intercept(InterceptorBean.java:136)
> >
> >                                 at
> >
> org.apache.webbeans.intercept.InterceptorInvocationContext.proceed(InterceptorInvocationContext.java:63)
> >
> >                                 at
> >
> org.apache.webbeans.intercept.DefaultInterceptorHandler.invoke(DefaultInterceptorHandler.java:139)
> >
> >                                 at
> >
> com.kaltire.mix.tirelodge.camel.beans.EventProcessor$$OwbInterceptProxy0.process(com/kaltire/mix/tirelodge/camel/beans/EventProcessor.java)
> >
> >                                 at
> > sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> >
> >                                 at
> >
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
> >
> >                                 at
> >
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> >
> >                                 at
> > java.lang.reflect.Method.invoke(Method.java:498)
> >
> >                                 at
> >
> org.apache.camel.support.ObjectHelper.invokeMethodSafe(ObjectHelper.java:209)
> >
> >                                 at
> > org.apache.camel.component.bean.MethodInfo.invoke(MethodInfo.java:421)
> >
> >                                 at
> >
> org.apache.camel.component.bean.MethodInfo$1.doProceed(MethodInfo.java:242)
> >
> >                                 at
> > org.apache.camel.component.bean.MethodInfo$1.proceed(MethodInfo.java:213)
> >
> >                                 at
> >
> org.apache.camel.component.bean.AbstractBeanProcessor.process(AbstractBeanProcessor.java:154)
> >
> >                                 at
> >
> org.apache.camel.component.bean.BeanProcessor.process(BeanProcessor.java:56)
> >
> >                                 at
> >
> org.apache.camel.management.DefaultInstrumentationProcessor.process(DefaultInstrumentationProcessor.java:91)
> >
> >                                 at
> >
> org.apache.camel.processor.errorhandler.RedeliveryErrorHandler$RedeliveryTask.doRun(RedeliveryErrorHandler.java:702)
> >
> >                                 at
> >
> org.apache.camel.processor.errorhandler.RedeliveryErrorHandler$RedeliveryTask.run(RedeliveryErrorHandler.java:616)
> >
> >                                 ... 72 common frames omitted
> >
> >                 Caused by: org.hibernate.exception.SQLGrammarException:
> > could not execute statement
> >
> >                                 at
> >
> org.hibernate.exception.internal.SQLExceptionTypeDelegate.convert(SQLExceptionTypeDelegate.java:82)
> >
> >                                 at
> >
> org.hibernate.exception.internal.StandardSQLExceptionConverter.convert(StandardSQLExceptionConverter.java:49)
> >
> >                                 at
> >
> org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:124)
> >
> >                                 at
> >
> org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:109)
> >
> >                                 at
> >
> org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.executeUpdate(ResultSetReturnImpl.java:189)
> >
> >                                 at
> >
> org.hibernate.engine.query.spi.NativeSQLQueryPlan.performExecuteUpdate(NativeSQLQueryPlan.java:204)
> >
> >                                 at
> >
> org.hibernate.internal.SessionImpl.executeNativeUpdate(SessionImpl.java:1238)
> >
> >                                 at
> > org.hibernate.internal.SQLQueryImpl.executeUpdate(SQLQueryImpl.java:401)
> >
> >                                 at
> > org.hibernate.ejb.QueryImpl.internalExecuteUpdate(QueryImpl.java:198)
> >
> >                                 at
> >
> org.hibernate.ejb.AbstractQueryImpl.executeUpdate(AbstractQueryImpl.java:102)
> >
> >                                 ... 131 common frames omitted
> >
> >                 Caused by: java.sql.SQLSyntaxErrorException: Table
> > 'KTDN_TM.badTable doesn't exist
> >
> >                                 at
> >
> com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:120)
> >
> >                                 at
> >
> com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:97)
> >
> >                                 at
> >
> com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:122)
> >
> >                                 at
> >
> com.mysql.cj.jdbc.ClientPreparedStatement.executeInternal(ClientPreparedStatement.java:953)
> >
> >                                 at
> >
> com.mysql.cj.jdbc.ClientPreparedStatement.executeUpdateInternal(ClientPreparedStatement.java:1092)
> >
> >                                 at
> >
> com.mysql.cj.jdbc.ClientPreparedStatement.executeUpdateInternal(ClientPreparedStatement.java:1040)
> >
> >                                 at
> >
> com.mysql.cj.jdbc.ClientPreparedStatement.executeLargeUpdate(ClientPreparedStatement.java:1347)
> >
> >                                 at
> >
> com.mysql.cj.jdbc.ClientPreparedStatement.executeUpdate(ClientPreparedStatement.java:1025)
> >
> >                                 at
> > sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> >
> >                                 at
> >
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
> >
> >                                 at
> >
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> >
> >                                 at
> > java.lang.reflect.Method.invoke(Method.java:498)
> >
> >                                 at
> >
> org.apache.tomcat.jdbc.pool.StatementFacade$StatementProxy.invoke(StatementFacade.java:114)
> >
> >                                 at
> > com.sun.proxy.$Proxy238.executeUpdate(Unknown Source)
> >
> >                                 at
> >
> org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.executeUpdate(ResultSetReturnImpl.java:186)
> >
> >                                 ... 136 common frames omitted
> >
> >
> >
> > Updating the pom.xml to use Camel 3.5.0 I see multiple entries like this
> > during the boot (16 times to be exact):
> >
> >
> >
> > 2020-09-08 10:24:00.174 [http-nio-8081-exec-4] WARN
> > o.a.c.c.t.TransactionalJtaTransactionPolicy - Could not find the
> > transaction manager through java:/TransactionManager
> >
> >
> >
> > Then this (same stacktrace and message) 5 times:
> >
> >
> >
> > 2020-09-08 11:53:23.487 [Thread-0 (ActiveMQ-client] WARN
> > o.a.c.jta.TransactionErrorHandler - Transaction rollback (0x41543024)
> > redelivered(true) for (MessageId: ID:07638789-f1fb-11ea-b2f4-564c8aece8ca
> > on ExchangeId: ID-Kal030841-1599591203098-0-2) caught: null
> >
> > 2020-09-08 11:53:23.496 [Thread-0 (ActiveMQ-client] ERROR
> > o.a.c.jta.TransactionErrorHandler - Failed delivery for (MessageId:
> > ID:07638789-f1fb-11ea-b2f4-564c8aece8ca on ExchangeId:
> > ID-Kal030841-1599591203098-0-2). Exhausted after delivery attempt: 1
> > caught: java.lang.NullPointerException
> >
> >
> >
> > Message History (complete message history is disabled)
> >
> >
> >
> ---------------------------------------------------------------------------------------------------------------------------------------
> >
> > RouteId              ProcessorId
> > Processor
> > Elapsed (ms)
> >
> > [easybook-events   ] [easybook-events   ]
> >
> [from[sjms://topic:kt.mix.easybook.events?durableSubscriptionId=tire-lodge-dev&]
> > [        31]
> >
> >                 ...
> >
> > [easybook-events   ] [transacted1       ]
> > [transacted
> > ] [         0]
> >
> >
> >
> > Stacktrace
> >
> >
> >
> ---------------------------------------------------------------------------------------------------------------------------------------
> >
> >
> >
> > java.lang.NullPointerException: null
> >
> >                 at
> >
> org.apache.camel.cdi.transaction.TransactionalJtaTransactionPolicy.hasActiveTransaction(TransactionalJtaTransactionPolicy.java:114)
> >
> >                 at
> >
> org.apache.camel.cdi.transaction.RequiredJtaTransactionPolicy.run(RequiredJtaTransactionPolicy.java:26)
> >
> >                 at
> >
> org.apache.camel.jta.TransactionErrorHandler.doInTransactionTemplate(TransactionErrorHandler.java:186)
> >
> >                 at
> >
> org.apache.camel.jta.TransactionErrorHandler.processInTransaction(TransactionErrorHandler.java:137)
> >
> >                 at
> >
> org.apache.camel.jta.TransactionErrorHandler.process(TransactionErrorHandler.java:101)
> >
> >                 at
> >
> org.apache.camel.jta.TransactionErrorHandler.process(TransactionErrorHandler.java:110)
> >
> >                 at
> >
> org.apache.camel.processor.errorhandler.RedeliveryErrorHandler$SimpleTask.run(RedeliveryErrorHandler.java:404)
> >
> >                 at
> >
> org.apache.camel.impl.engine.DefaultReactiveExecutor$Worker.schedule(DefaultReactiveExecutor.java:148)
> >
> >                 at
> >
> org.apache.camel.impl.engine.DefaultReactiveExecutor.scheduleMain(DefaultReactiveExecutor.java:60)
> >
> >                 at
> > org.apache.camel.processor.Pipeline.process(Pipeline.java:147)
> >
> >                 at
> >
> org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:287)
> >
> >                 at
> >
> org.apache.camel.impl.engine.DefaultAsyncProcessorAwaitManager.process(DefaultAsyncProcessorAwaitManager.java:83)
> >
> >                 at
> >
> org.apache.camel.support.AsyncProcessorSupport.process(AsyncProcessorSupport.java:41)
> >
> >                 at
> >
> org.apache.camel.component.sjms.consumer.InOnlyMessageHandler.handleMessage(InOnlyMessageHandler.java:53)
> >
> >                 at
> >
> org.apache.camel.component.sjms.consumer.AbstractMessageHandler.onMessage(AbstractMessageHandler.java:81)
> >
> >                 at
> >
> org.apache.activemq.artemis.jms.client.JMSMessageListenerWrapper.onMessage(JMSMessageListenerWrapper.java:110)
> >
> >                 at
> >
> org.apache.activemq.artemis.core.client.impl.ClientConsumerImpl.callOnMessage(ClientConsumerImpl.java:1030)
> >
> >                 at
> >
> org.apache.activemq.artemis.core.client.impl.ClientConsumerImpl.access$400(ClientConsumerImpl.java:49)
> >
> >                 at
> >
> org.apache.activemq.artemis.core.client.impl.ClientConsumerImpl$Runner.run(ClientConsumerImpl.java:1153)
> >
> >                 at
> >
> org.apache.activemq.artemis.utils.actors.OrderedExecutor.doTask(OrderedExecutor.java:42)
> >
> >                 at
> >
> org.apache.activemq.artemis.utils.actors.OrderedExecutor.doTask(OrderedExecutor.java:31)
> >
> >                 at
> >
> org.apache.activemq.artemis.utils.actors.ProcessorBase.executePendingTasks(ProcessorBase.java:65)
> >
> >                 at
> >
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
> >
> >                 at
> >
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
> >
> >                 at
> >
> org.apache.activemq.artemis.utils.ActiveMQThreadFactory$1.run(ActiveMQThreadFactory.java:118)
> >
> >
> >
> > And then JMS message disappears from the topic.
> >
> > Note when using 3.4.5  message stays unacknowledged, I will stick to
> 3.4.5
> > for now… Please let me know if you need any more info.
> >
> >
> >
> > Cheers,
> >
> > Dmitry
> >
> >
> >
> >
> >
> > *From:* Shultz, Dmitry
> > *Sent:* Wednesday, September 2, 2020 9:17 PM
> > *To:* Zheng Feng <zf...@redhat.com>; users@camel.apache.org
> > *Subject:* Re: CDI + SJMS + transacted
> >
> >
> >
> > You are right, I forgot to specify transacted=true on the endpoint uri...
> >
> > To be exact I looked at all the places (even changed the AMQ connection
> > URL :) except this probably because for some stupid reason wishfully
> > thought the .transacted() on the route is enough for the component to set
> > it true automagically.
> >
> > The interesting thing is that it worked (infinite redeliveries) - message
> > was not committed to the broker (not lost) without the URI change just by
> > using the JTA error handler builder (comes with CDI component). Now it
> > works even with no redeliveries configured at all, but they are  never
> > stopping (do there is some good automation already:)
> > ------------------------------
> >
> > *From:* Zheng Feng <zf...@redhat.com>
> > *Sent:* 01 September 2020 23:09
> > *To:* users@camel.apache.org <us...@camel.apache.org>
> > *Subject:* Re: CDI + SJMS + transacted
> >
> >
> >
> > Yeah, TomEE could provide the "java:/TransactionManager" since it is a
> J2EE
> > container. I wonder if you use the "transacted=true" option on the sjms
> > consumer which will rollback the transaction if the router is failed.
> >
> >
> > On Tue, Sep 1, 2020 at 4:35 AM Shultz, Dmitry <Dmitry_Shultz@kaltire.com
> >
> > wrote:
> >
> > > Thanks for the reply Zheng.
> > >
> > > I'm running very similar code in the TomEE and It doesn't fail on NPE.
> > See
> > > similar behaviour though:
> > >
> > > [Thread-0 (ActiveMQ-client] WARN  o.a.c.jta.TransactionErrorHandler -
> > > Transaction rollback (0x30730302) redelivered(false) for (MessageId:
> > > ID:9fd77209-ebc6-11ea-955a-1ee7171b8787 on ExchangeId:
> > > ID-Kal030841-1598904862181-0-2) caught: test
> > >
> > > And after process restart the message is gone.
> > >
> > > I can confirm that when I use infinite re-delivery (the error handler
> > > never exhausted) the message stays in the durable topic as forever even
> > > after restart. So, I'm not sure if my expectation are correct i.e. does
> > it
> > > supposed to stay in the topic after error handler redeliveries are
> > > exhausted?
> > >
> > > Cheers,
> > > Dmitry
> > >
> > >
> > > -----Original Message-----
> > > From: Zheng Feng [mailto:zfeng@redhat.com <zf...@redhat.com>]
> > > Sent: Sunday, August 30, 2020 8:58 AM
> > > To: users@camel.apache.org
> > > Subject: Re: CDI + SJMS + transacted
> > >
> > > Hi Dmitry,
> > >
> > > It seems that SJMS [1]  currently only supports the use of internal JMS
> > > Transactions. There is no support for the Camel Transaction Processor
> or
> > > the Java Transaction API (JTA). Also if you want to use the JTA
> > transaction
> > > provided by the camel-cdi, the TransactionManager should be available
> via
> > > JNDI "java:/TransactionManager". Then you are running the camel in the
> > > standalone environment, and the transaction manager should be provided
> by
> > > the third party implementation, such as Narayana ( you can find the jta
> > > standalone example here [2]). The NPE I think should be fixed by
> > > CAMEL-14918 [3], and I will try to backport it to the 3.4.x
> > >
> > > Regards,
> > > Zheng Feng
> > >
> > > [1]
> > >
> >
> https://urldefense.com/v3/__https://camel.apache.org/components/latest/sjms-component.html__;!!LdWlNaMnLCM!OJ-X6YfRy0exjKJ8PNWy-d5aHbD6mgnBfTRZXXKak6kEojLVTmcKwcF4puKY9P1BTwqO$
> <https://urldefense.com/v3/__https:/camel.apache.org/components/latest/sjms-component.html__;!!LdWlNaMnLCM!OJ-X6YfRy0exjKJ8PNWy-d5aHbD6mgnBfTRZXXKak6kEojLVTmcKwcF4puKY9P1BTwqO$>
> > <
> https://urldefense.com/v3/__https:/camel.apache.org/components/latest/sjms-component.html__;!!LdWlNaMnLCM!OJ-X6YfRy0exjKJ8PNWy-d5aHbD6mgnBfTRZXXKak6kEojLVTmcKwcF4puKY9P1BTwqO$
> >
> > > [2]
> > >
> >
> https://urldefense.com/v3/__https://github.com/jbosstm/quickstart/tree/master/jta-1_2-standalone__;!!LdWlNaMnLCM!OJ-X6YfRy0exjKJ8PNWy-d5aHbD6mgnBfTRZXXKak6kEojLVTmcKwcF4puKY9Py3UShj$
> <https://urldefense.com/v3/__https:/github.com/jbosstm/quickstart/tree/master/jta-1_2-standalone__;!!LdWlNaMnLCM!OJ-X6YfRy0exjKJ8PNWy-d5aHbD6mgnBfTRZXXKak6kEojLVTmcKwcF4puKY9Py3UShj$>
> > <
> https://urldefense.com/v3/__https:/github.com/jbosstm/quickstart/tree/master/jta-1_2-standalone__;!!LdWlNaMnLCM!OJ-X6YfRy0exjKJ8PNWy-d5aHbD6mgnBfTRZXXKak6kEojLVTmcKwcF4puKY9Py3UShj$
> >
> > > [3]
> > >
> > >
> >
> https://urldefense.com/v3/__https://github.com/apache/camel/commit/4421b2bba294dd8828621684c7670f78d811ecd8*diff-773b20d331dac13fb17acfa0f58ac01f__;Iw!!LdWlNaMnLCM!OJ-X6YfRy0exjKJ8PNWy-d5aHbD6mgnBfTRZXXKak6kEojLVTmcKwcF4puKY9F_CLTBw$
> <https://urldefense.com/v3/__https:/github.com/apache/camel/commit/4421b2bba294dd8828621684c7670f78d811ecd8*diff-773b20d331dac13fb17acfa0f58ac01f__;Iw!!LdWlNaMnLCM!OJ-X6YfRy0exjKJ8PNWy-d5aHbD6mgnBfTRZXXKak6kEojLVTmcKwcF4puKY9F_CLTBw$>
> > <
> https://urldefense.com/v3/__https:/github.com/apache/camel/commit/4421b2bba294dd8828621684c7670f78d811ecd8*diff-773b20d331dac13fb17acfa0f58ac01f__;Iw!!LdWlNaMnLCM!OJ-X6YfRy0exjKJ8PNWy-d5aHbD6mgnBfTRZXXKak6kEojLVTmcKwcF4puKY9F_CLTBw$
> >
> > >
> > > On Sat, Aug 29, 2020 at 5:50 AM Shultz, Dmitry <
> > Dmitry_Shultz@kaltire.com>
> > > wrote:
> > >
> > > > Hi All,
> > > >
> > > > I'm probably doing something  wrong/stupid, but I can't get the sjms
> > > > (recent Camel, but same true for 2.25.2) to leave failed messages in
> > > > the JMS topic (AMQ Artemis) after exception.
> > > > This is what logged:
> > > >
> > > > [ctiveMQ-client-global-threads)] TransactionErrorHandler        WARN
> > > > Transaction rollback (0x5cd1283) redelivered(false) for (MessageId:
> > > > ID:bbaa590d-e975-11ea-9ad0-6c4b902fc0e1 on ExchangeId:
> > > > ID-Kal030841-1598650245838-0-1) caught: null
> > > > [ctiveMQ-client-global-threads)] TransactionErrorHandler        WARN
> > > > Transaction rollback (0x5cd1283) redelivered(false) for (MessageId:
> > > > ID:bbaa590d-e975-11ea-9ad0-6c4b902fc0e1 on ExchangeId:
> > > > ID-Kal030841-1598650245838-0-1) caught: null
> > > > [ctiveMQ-client-global-threads)] TransactionErrorHandler        WARN
> > > > Transaction rollback (0x5cd1283) redelivered(false) for (MessageId:
> > > > ID:bbaa590d-e975-11ea-9ad0-6c4b902fc0e1 on ExchangeId:
> > > > ID-Kal030841-1598650245838-0-1) caught: null
> > > > [ctiveMQ-client-global-threads)] TransactionErrorHandler        ERROR
> > > > Failed delivery for (MessageId:
> > > > ID:bbaa590d-e975-11ea-9ad0-6c4b902fc0e1 on
> > > > ExchangeId: ID-Kal030841-1598650245838-0-1). Exhausted after delivery
> > > > attempt: 3 caught: java.lang.NullPointerException
> > > >
> > > > Message History (complete message history is disabled)
> > > >
> > > >
> > >
> >
> ---------------------------------------------------------------------------------------------------------------------------------------
> > > > RouteId              ProcessorId          Processor
> > > >                                                 Elapsed (ms)
> > > > [route1            ] [route1            ]
> > > > [from[sjms://topic:topic:test?durableSubscriptionId=dmitr] [
> 1999]
> > > >                 ...
> > > > [route1            ] [transacted1       ] [transacted
> > > >                                               ] [         0]
> > > >
> > > > Stacktrace
> > > >
> > > >
> ----------------------------------------------------------------------
> > > > -----------------------------------------------------------------
> > > >
> > > > java.lang.NullPointerException: null
> > > >                 at
> > > >
> org.apache.camel.cdi.transaction.TransactionalJtaTransactionPolicy.has
> > > > ActiveTransaction(TransactionalJtaTransactionPolicy.java:105)
> > > > ~[camel-cdi-3.4.3.jar:3.4.3]
> > > >                 at
> > > >
> org.apache.camel.cdi.transaction.RequiredJtaTransactionPolicy.run(Requ
> > > > iredJtaTransactionPolicy.java:26)
> > > > ~[camel-cdi-3.4.3.jar:3.4.3]
> > > >                 at
> > > >
> org.apache.camel.jta.TransactionErrorHandler.doInTransactionTemplate(T
> > > > ransactionErrorHandler.java:193)
> > > > ~[camel-jta-3.4.3.jar:3.4.3]
> > > >                 at
> > > >
> org.apache.camel.jta.TransactionErrorHandler.processInTransaction(Tran
> > > > sactionErrorHandler.java:144)
> > > > ~[camel-jta-3.4.3.jar:3.4.3]
> > > >                 at
> > > >
> org.apache.camel.jta.TransactionErrorHandler.process(TransactionErrorH
> > > > andler.java:108)
> > > > ~[camel-jta-3.4.3.jar:3.4.3]
> > > >                 at
> > > >
> org.apache.camel.jta.TransactionErrorHandler.process(TransactionErrorH
> > > > andler.java:117)
> > > > ~[camel-jta-3.4.3.jar:3.4.3]
> > > >                 at
> > > >
> org.apache.camel.processor.errorhandler.RedeliveryErrorHandler$Redeliv
> > > > eryTask.redeliver(RedeliveryErrorHandler.java:766)
> > > > ~[camel-base-3.4.3.jar:3.4.3]
> > > >                 at
> > > >
> org.apache.camel.impl.engine.DefaultReactiveExecutor$Worker.schedule(D
> > > > efaultReactiveExecutor.java:148)
> > > > ~[camel-base-3.4.3.jar:3.4.3]
> > > >                 at
> > > >
> org.apache.camel.impl.engine.DefaultReactiveExecutor.scheduleMain(Defa
> > > > ultReactiveExecutor.java:60)
> > > > ~[camel-base-3.4.3.jar:3.4.3]
> > > >                 at
> > > > org.apache.camel.processor.Pipeline.process(Pipeline.java:147)
> > > > ~[camel-base-3.4.3.jar:3.4.3]
> > > >                 at
> > > >
> org.apache.camel.processor.CamelInternalProcessor.process(CamelInterna
> > > > lProcessor.java:286)
> > > > ~[camel-base-3.4.3.jar:3.4.3]
> > > >                 at
> > > >
> org.apache.camel.impl.engine.DefaultAsyncProcessorAwaitManager.process
> > > > (DefaultAsyncProcessorAwaitManager.java:83)
> > > > ~[camel-base-3.4.3.jar:3.4.3]
> > > >                 at
> > > >
> org.apache.camel.support.AsyncProcessorSupport.process(AsyncProcessorS
> > > > upport.java:40)
> > > > ~[camel-support-3.4.3.jar:3.4.3]
> > > >                 at
> > > >
> org.apache.camel.component.sjms.consumer.InOnlyMessageHandler.handleMe
> > > > ssage(InOnlyMessageHandler.java:52)
> > > > ~[camel-sjms-3.4.3.jar:3.4.3]
> > > >                 at
> > > >
> org.apache.camel.component.sjms.consumer.AbstractMessageHandler.onMess
> > > > age(AbstractMessageHandler.java:81)
> > > > ~[camel-sjms-3.4.3.jar:3.4.3]
> > > >                 at
> > > >
> org.apache.activemq.artemis.jms.client.JMSMessageListenerWrapper.onMes
> > > > sage(JMSMessageListenerWrapper.java:110)
> > > > ~[artemis-jms-client-2.14.0.jar:2.14.0]
> > > >                 at
> > > >
> org.apache.activemq.artemis.core.client.impl.ClientConsumerImpl.callOn
> > > > Message(ClientConsumerImpl.java:1030)
> > > > ~[artemis-core-client-2.14.0.jar:2.14.0]
> > > >
> > > > So, it looks like rollback is kicked off, but when I restart the
> > > > process message is gone from the JMS topic.
> > > >
> > > > Sample reproducer  (generated using
> > > > -DarchetypeArtifactId=camel-archetype-cdi as described here
> > > >
> https://urldefense.com/v3/__https://camel.apache.org/components/latest
> <https://urldefense.com/v3/__https:/camel.apache.org/components/latest>
> > <https://urldefense.com/v3/__https:/camel.apache.org/components/latest>
> > > >
> /others/cdi.html__;!!LdWlNaMnLCM!OJ-X6YfRy0exjKJ8PNWy-d5aHbD6mgnBfTRZX
> > > > XKak6kEojLVTmcKwcF4puKY9NnrgwcA$  ) is here
> > > >
> https://urldefense.com/v3/__https://github.com/zeppelinux/CamelCDISjms
> <https://urldefense.com/v3/__https:/github.com/zeppelinux/CamelCDISjms>
> > <https://urldefense.com/v3/__https:/github.com/zeppelinux/CamelCDISjms>
>
> > > >
> Test__;!!LdWlNaMnLCM!OJ-X6YfRy0exjKJ8PNWy-d5aHbD6mgnBfTRZXXKak6kEojLVT
> > > > mcKwcF4puKY9HBU5Opk$
> > > > Please  have a look.
> > > >
> > > > Cheers,
> > > > Dmitry
> > > >
> > >
> >
>
>

RE: CDI + SJMS + transacted

Posted by "Shultz, Dmitry" <Dm...@kaltire.com>.
Romain,

My current Hibernate is 4.2.21.Final,  here are the different outcomes I see after I applied your suggestion to the persistence.xml:


1.       name="hibernate.transaction.jta.platform" value="org.apache.openejb.hibernate.OpenEJBJtaPlatform2"

getting (as expected) java.lang.ClassNotFoundException: org.hibernate.engine.transaction.jta.platform.internal.AbstractJtaPlatform


2.       name="hibernate.transaction.jta.platform" value="org.apache.openejb.hibernate.OpenEJBJtaPlatform"

getting same WARN  o.a.c.c.t.TransactionalJtaTransactionPolicy - Could not find the transaction manager through java:/TransactionManager when Camel boots



3.       name="hibernate.transaction.manager_lookup_class" value="org.apache.openejb.hibernate.TransactionManagerLookup"
getting same WARN  o.a.c.c.t.TransactionalJtaTransactionPolicy - Could not find the transaction manager through java:/TransactionManager when Camel boots

In  2 & 3 the persistence unit starts successfully, it’s only when Camel tries to find the TransactionManager it logs the warning.

I tried to upgrade Hibernate to 5.4.20.Final but it doesn’t seem to be compatible with my current TomEE 7.0.6  and I can’t easily update it at the moment ☹

                Caused by: java.lang.ClassNotFoundException: org.hibernate.ejb.HibernatePersistence
                                at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1364)
                                at org.apache.tomee.catalina.TomEEWebappClassLoader.loadClass(TomEEWebappClassLoader.java:208)
                                at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1185)
                                at org.apache.openejb.assembler.classic.EntityManagerFactoryCallable.call(EntityManagerFactoryCallable.java:84)
                                at org.apache.openejb.assembler.classic.ReloadableEntityManagerFactory.createDelegate(ReloadableEntityManagerFactory.java:134)

Is there anything else I can try?

Cheers,
Dmitry


From: Romain Manni-Bucau [mailto:rmannibucau@gmail.com]
Sent: Wednesday, September 9, 2020 12:56 AM
To: users@camel.apache.org
Cc: Shultz, Dmitry <Dm...@kaltire.com>
Subject: Re: CDI + SJMS + transacted

In hibernate configuration, you can try to force the transaction manager lokup hibernate.transaction.jta.platform=org.apache.openejb.hibernate.OpenEJBJtaPlatform2 (if you use older versions with the older hibernate key just drop the "2" at the end of the platform and if you use a very old hibernate version (manager_lookup_class), then use org.apache.openejb.hibernate.TransactionManagerLookup)

Romain Manni-Bucau
@rmannibucau [twitter.com]<https://urldefense.com/v3/__https:/twitter.com/rmannibucau__;!!LdWlNaMnLCM!L4bACvX05-Lb8u2ekiHyS3J3BxvhaVb4D1pnwM4ItphCC4flnrEsTsv-xjwZfoi1Cx-a$> |  Blog [rmannibucau.metawerx.net]<https://urldefense.com/v3/__https:/rmannibucau.metawerx.net/__;!!LdWlNaMnLCM!L4bACvX05-Lb8u2ekiHyS3J3BxvhaVb4D1pnwM4ItphCC4flnrEsTsv-xjwZfsV0FRfY$> | Old Blog [rmannibucau.wordpress.com]<https://urldefense.com/v3/__http:/rmannibucau.wordpress.com__;!!LdWlNaMnLCM!L4bACvX05-Lb8u2ekiHyS3J3BxvhaVb4D1pnwM4ItphCC4flnrEsTsv-xjwZfvdkhBJC$> | Github [github.com]<https://urldefense.com/v3/__https:/github.com/rmannibucau__;!!LdWlNaMnLCM!L4bACvX05-Lb8u2ekiHyS3J3BxvhaVb4D1pnwM4ItphCC4flnrEsTsv-xjwZflUkiucl$> | LinkedIn [linkedin.com]<https://urldefense.com/v3/__https:/www.linkedin.com/in/rmannibucau__;!!LdWlNaMnLCM!L4bACvX05-Lb8u2ekiHyS3J3BxvhaVb4D1pnwM4ItphCC4flnrEsTsv-xjwZfiS4xUan$> | Book [packtpub.com]<https://urldefense.com/v3/__https:/www.packtpub.com/application-development/java-ee-8-high-performance__;!!LdWlNaMnLCM!L4bACvX05-Lb8u2ekiHyS3J3BxvhaVb4D1pnwM4ItphCC4flnrEsTsv-xjwZfoOPIGUi$>


Le mer. 9 sept. 2020 à 09:42, Zheng Feng <zf...@redhat.com>> a écrit :
Hi Dmitry,

It seems that the TransactionManager can not be accessed via
"java:/TransactionManager" and I am not an expert of TomEE also I am not
sure if there is a way to set the transaction manager jndi name in the
configuration file ?

Regards,
Zheng Feng

On Wed, Sep 9, 2020 at 3:18 AM Shultz, Dmitry <Dm...@kaltire.com>>
wrote:

> Zheng,
>
>
>
> I’m still having problem and it seems to behave differently running on the
> same TomEE version (7.0.6) but different Camel 3+ versions.
>
>
>
> To reproduce  I corrupted the query (handled by Deltaspike Data Module
> repository).
>
>
>
> When it runs (fails) with Camel 3.4.5 it behaves as expected the first
> time, but when it tries to redeliver the same JMS message it complains with
> ‘Cannot join transaction: do not override
> hibernate.transaction.factory_class’. Here is the full stack for redelivery:
>
>
>
> 2020-09-08 11:07:56.428 [Thread-0 (ActiveMQ-client] WARN
> c.k.m.c.DeadLetterChannelBuilderProducer - redelivery attempt 1 to
> direct://process
>
> 2020-09-08 11:07:56.440 [Thread-0 (ActiveMQ-client] WARN
> o.h.ejb.AbstractEntityManagerImpl - HHH000326: Cannot join transaction: do
> not override hibernate.transaction.factory_class
>
> 2020-09-08 11:07:56.442 [Thread-0 (ActiveMQ-client] ERROR
> c.k.m.c.DeadLetterChannelBuilderProducer - processing failed with:
>
> javax.persistence.TransactionRequiredException: No active JTA transaction
> on joinTransaction call
>
>                 at
> org.hibernate.ejb.AbstractEntityManagerImpl.joinTransaction(AbstractEntityManagerImpl.java:1233)
>
>                 at
> org.hibernate.ejb.AbstractEntityManagerImpl.joinTransaction(AbstractEntityManagerImpl.java:1183)
>
>                 at
> org.apache.deltaspike.jpa.impl.transaction.BeanManagedUserTransactionStrategy.beforeProceed(BeanManagedUserTransactionStrategy.java:171)
>
>                 at
> org.apache.deltaspike.jpa.impl.transaction.EnvironmentAwareTransactionStrategy.beforeProceed(EnvironmentAwareTransactionStrategy.java:109)
>
>                 at
> org.apache.deltaspike.jpa.impl.transaction.ResourceLocalTransactionStrategy.execute(ResourceLocalTransactionStrategy.java:127)
>
>                 at
> org.apache.deltaspike.jpa.impl.transaction.TransactionalInterceptor.executeInTransaction(TransactionalInterceptor.java:57)
>
>                 at sun.reflect.NativeMethodAccessorImpl.invoke0(Native
> Method)
>
>                 at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
>
>                 at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>
>                 at java.lang.reflect.Method.invoke(Method.java:498)
>
>                 at
> org.apache.webbeans.component.InterceptorBean.intercept(InterceptorBean.java:136)
>
>                 at
> org.apache.webbeans.intercept.InterceptorInvocationContext.proceed(InterceptorInvocationContext.java:63)
>
>                 at
> org.apache.webbeans.intercept.DefaultInterceptorHandler.invoke(DefaultInterceptorHandler.java:139)
>
>                 at
> com.kaltire.mix.tirelodge.camel.beans.EventProcessor$$OwbInterceptProxy0.process(com/kaltire/mix/tirelodge/camel/beans/EventProcessor.java)
>
>                 at sun.reflect.NativeMethodAccessorImpl.invoke0(Native
> Method)
>
>                 at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
>
>                 at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>
>                 at java.lang.reflect.Method.invoke(Method.java:498)
>
>                 at
> org.apache.camel.support.ObjectHelper.invokeMethodSafe(ObjectHelper.java:209)
>
>                 at
> org.apache.camel.component.bean.MethodInfo.invoke(MethodInfo.java:421)
>
>                 at
> org.apache.camel.component.bean.MethodInfo$1.doProceed(MethodInfo.java:242)
>
>                 at
> org.apache.camel.component.bean.MethodInfo$1.proceed(MethodInfo.java:213)
>
>                 at
> org.apache.camel.component.bean.AbstractBeanProcessor.process(AbstractBeanProcessor.java:154)
>
>                 at
> org.apache.camel.component.bean.BeanProcessor.process(BeanProcessor.java:56)
>
>                 at
> org.apache.camel.management.DefaultInstrumentationProcessor.process(DefaultInstrumentationProcessor.java:91)
>
>                 at
> org.apache.camel.processor.errorhandler.RedeliveryErrorHandler$RedeliveryTask.redeliver(RedeliveryErrorHandler.java:766)
>
>                 at
> org.apache.camel.impl.engine.DefaultReactiveExecutor$Worker.schedule(DefaultReactiveExecutor.java:148)
>
>                 at
> org.apache.camel.impl.engine.DefaultReactiveExecutor.scheduleSync(DefaultReactiveExecutor.java:65)
>
>                 at
> org.apache.camel.processor.errorhandler.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:175)
>
>                 at
> org.apache.camel.impl.engine.DefaultAsyncProcessorAwaitManager.process(DefaultAsyncProcessorAwaitManager.java:83)
>
>                 at
> org.apache.camel.processor.errorhandler.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:158)
>
>                 at
> org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:260)
>
>                 at
> org.apache.camel.processor.ChoiceProcessor.process(ChoiceProcessor.java:115)
>
>                 at
> org.apache.camel.impl.engine.DefaultAsyncProcessorAwaitManager.process(DefaultAsyncProcessorAwaitManager.java:83)
>
>                 at
> org.apache.camel.support.AsyncProcessorSupport.process(AsyncProcessorSupport.java:40)
>
>                 at
> org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:260)
>
>                 at
> org.apache.camel.impl.engine.DefaultAsyncProcessorAwaitManager.process(DefaultAsyncProcessorAwaitManager.java:83)
>
>                 at
> org.apache.camel.support.AsyncProcessorSupport.process(AsyncProcessorSupport.java:40)
>
>                 at
> org.apache.camel.jta.TransactionErrorHandler.processByErrorHandler(TransactionErrorHandler.java:242)
>
>                 at
> org.apache.camel.jta.TransactionErrorHandler$1.run(TransactionErrorHandler.java:203)
>
>                 at
> org.apache.camel.cdi.transaction.TransactionalJtaTransactionPolicy.runWithTransaction(TransactionalJtaTransactionPolicy.java:51)
>
>                 at
> org.apache.camel.cdi.transaction.RequiredJtaTransactionPolicy.run(RequiredJtaTransactionPolicy.java:26)
>
>                 at
> org.apache.camel.jta.TransactionErrorHandler.doInTransactionTemplate(TransactionErrorHandler.java:193)
>
>                 at
> org.apache.camel.jta.TransactionErrorHandler.processInTransaction(TransactionErrorHandler.java:144)
>
>                 at
> org.apache.camel.jta.TransactionErrorHandler.process(TransactionErrorHandler.java:108)
>
>                 at
> org.apache.camel.jta.TransactionErrorHandler.process(TransactionErrorHandler.java:117)
>
>                 at
> org.apache.camel.processor.errorhandler.RedeliveryErrorHandler$SimpleTask.run(RedeliveryErrorHandler.java:395)
>
>                 at
> org.apache.camel.impl.engine.DefaultReactiveExecutor$Worker.schedule(DefaultReactiveExecutor.java:148)
>
>                 at
> org.apache.camel.impl.engine.DefaultReactiveExecutor.scheduleSync(DefaultReactiveExecutor.java:65)
>
>                 at
> org.apache.camel.processor.errorhandler.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:175)
>
>                 at
> org.apache.camel.impl.engine.DefaultAsyncProcessorAwaitManager.process(DefaultAsyncProcessorAwaitManager.java:83)
>
>                 at
> org.apache.camel.processor.errorhandler.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:158)
>
>                 at
> org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:260)
>
>                 at
> org.apache.camel.processor.Pipeline$PipelineTask.run(Pipeline.java:90)
>
>                 at
> org.apache.camel.impl.engine.DefaultReactiveExecutor$Worker.schedule(DefaultReactiveExecutor.java:148)
>
>                 at
> org.apache.camel.impl.engine.DefaultReactiveExecutor.scheduleSync(DefaultReactiveExecutor.java:65)
>
>                 at
> org.apache.camel.processor.Pipeline.process(Pipeline.java:145)
>
>                 at
> org.apache.camel.impl.engine.DefaultAsyncProcessorAwaitManager.process(DefaultAsyncProcessorAwaitManager.java:83)
>
>                 at
> org.apache.camel.support.AsyncProcessorSupport.process(AsyncProcessorSupport.java:40)
>
>                 at
> org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:260)
>
>                 at
> org.apache.camel.component.direct.DirectProducer.process(DirectProducer.java:66)
>
>                 at
> org.apache.camel.processor.SendProcessor.process(SendProcessor.java:168)
>
>                 at
> org.apache.camel.impl.engine.DefaultAsyncProcessorAwaitManager.process(DefaultAsyncProcessorAwaitManager.java:83)
>
>                 at
> org.apache.camel.support.AsyncProcessorSupport.process(AsyncProcessorSupport.java:40)
>
>                 at
> org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:260)
>
>                 at
> org.apache.camel.processor.Pipeline$PipelineTask.run(Pipeline.java:90)
>
>                 at
> org.apache.camel.impl.engine.DefaultReactiveExecutor$Worker.schedule(DefaultReactiveExecutor.java:148)
>
>                 at
> org.apache.camel.impl.engine.DefaultReactiveExecutor.scheduleSync(DefaultReactiveExecutor.java:65)
>
>                 at
> org.apache.camel.processor.Pipeline.process(Pipeline.java:145)
>
>                 at
> org.apache.camel.impl.engine.DefaultAsyncProcessorAwaitManager.process(DefaultAsyncProcessorAwaitManager.java:83)
>
>                 at
> org.apache.camel.support.AsyncProcessorSupport.process(AsyncProcessorSupport.java:40)
>
>                 at
> org.apache.camel.jta.TransactionErrorHandler.processByErrorHandler(TransactionErrorHandler.java:242)
>
>                 at
> org.apache.camel.jta.TransactionErrorHandler$1.run(TransactionErrorHandler.java:203)
>
>                 at
> org.apache.camel.cdi.transaction.TransactionalJtaTransactionPolicy.runWithTransaction(TransactionalJtaTransactionPolicy.java:51)
>
>                 at
> org.apache.camel.cdi.transaction.RequiredJtaTransactionPolicy.run(RequiredJtaTransactionPolicy.java:26)
>
>                 at
> org.apache.camel.jta.TransactionErrorHandler.doInTransactionTemplate(TransactionErrorHandler.java:193)
>
>                 at
> org.apache.camel.jta.TransactionErrorHandler.processInTransaction(TransactionErrorHandler.java:144)
>
>                 at
> org.apache.camel.jta.TransactionErrorHandler.process(TransactionErrorHandler.java:108)
>
>                 at
> org.apache.camel.jta.TransactionErrorHandler.process(TransactionErrorHandler.java:117)
>
>                 at
> org.apache.camel.processor.errorhandler.RedeliveryErrorHandler$SimpleTask.run(RedeliveryErrorHandler.java:395)
>
>                 at
> org.apache.camel.impl.engine.DefaultReactiveExecutor$Worker.schedule(DefaultReactiveExecutor.java:148)
>
>                 at
> org.apache.camel.impl.engine.DefaultReactiveExecutor.scheduleMain(DefaultReactiveExecutor.java:60)
>
>                 at
> org.apache.camel.processor.Pipeline.process(Pipeline.java:147)
>
>                 at
> org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:286)
>
>                 at
> org.apache.camel.impl.engine.DefaultAsyncProcessorAwaitManager.process(DefaultAsyncProcessorAwaitManager.java:83)
>
>                 at
> org.apache.camel.support.AsyncProcessorSupport.process(AsyncProcessorSupport.java:40)
>
>                 at
> org.apache.camel.component.sjms.consumer.InOnlyMessageHandler.handleMessage(InOnlyMessageHandler.java:52)
>
>                 at
> org.apache.camel.component.sjms.consumer.AbstractMessageHandler.onMessage(AbstractMessageHandler.java:81)
>
>                 at
> org.apache.activemq.artemis.jms.client.JMSMessageListenerWrapper.onMessage(JMSMessageListenerWrapper.java:110)
>
>                 at
> org.apache.activemq.artemis.core.client.impl.ClientConsumerImpl.callOnMessage(ClientConsumerImpl.java:1030)
>
>                 at
> org.apache.activemq.artemis.core.client.impl.ClientConsumerImpl.access$400(ClientConsumerImpl.java:49)
>
>                 at
> org.apache.activemq.artemis.core.client.impl.ClientConsumerImpl$Runner.run(ClientConsumerImpl.java:1153)
>
>                 at
> org.apache.activemq.artemis.utils.actors.OrderedExecutor.doTask(OrderedExecutor.java:42)
>
>                 at
> org.apache.activemq.artemis.utils.actors.OrderedExecutor.doTask(OrderedExecutor.java:31)
>
>                 at
> org.apache.activemq.artemis.utils.actors.ProcessorBase.executePendingTasks(ProcessorBase.java:65)
>
>                 at
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
>
>                 at
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
>
>                 at
> org.apache.activemq.artemis.utils.ActiveMQThreadFactory$1.run(ActiveMQThreadFactory.java:118)
>
>                 Suppressed: javax.persistence.PersistenceException:
> org.hibernate.exception.SQLGrammarException: could not execute statement
>
>                                 at
> org.hibernate.ejb.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1387)
>
>                                 at
> org.hibernate.ejb.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1310)
>
>                                 at
> org.hibernate.ejb.AbstractEntityManagerImpl.throwPersistenceException(AbstractEntityManagerImpl.java:1397)
>
>                                 at
> org.hibernate.ejb.AbstractQueryImpl.executeUpdate(AbstractQueryImpl.java:111)
>
>                                 at
> org.apache.deltaspike.data.impl.builder.result.QueryProcessorFactory$ExecuteUpdateQueryProcessor.executeQuery(QueryProcessorFactory.java:192)
>
>                                 at
> org.apache.deltaspike.data.impl.handler.CdiQueryInvocationContext.executeQuery(CdiQueryInvocationContext.java:253)
>
>                                 at
> org.apache.deltaspike.data.impl.builder.AnnotatedQueryBuilder.execute(AnnotatedQueryBuilder.java:51)
>
>                                 at
> org.apache.deltaspike.data.impl.builder.QueryBuilder.executeQuery(QueryBuilder.java:57)
>
>                                 at
> org.apache.deltaspike.data.impl.builder.AnnotatedQueryBuilder$$OwbNormalScopeProxy0.executeQuery(org/apache/deltaspike/data/impl/builder/AnnotatedQueryBuilder.java)
>
>                                 at
> org.apache.deltaspike.data.impl.tx.TransactionalQueryRunner$1.proceed(TransactionalQueryRunner.java:73)
>
>                                 at
> org.apache.deltaspike.jpa.impl.transaction.ResourceLocalTransactionStrategy.execute(ResourceLocalTransactionStrategy.java:130)
>
>                                 at
> org.apache.deltaspike.data.impl.tx.TransactionalQueryRunner.executeTransactional(TransactionalQueryRunner.java:68)
>
>                                 at
> org.apache.deltaspike.data.impl.tx.TransactionalQueryRunner.executeQuery(TransactionalQueryRunner.java:50)
>
>                                 at
> org.apache.deltaspike.data.impl.tx.TransactionalQueryRunner$$OwbNormalScopeProxy0.executeQuery(org/apache/deltaspike/data/impl/tx/TransactionalQueryRunner.java)
>
>                                 at
> org.apache.deltaspike.data.impl.handler.QueryHandler.process(QueryHandler.java:151)
>
>                                 at
> org.apache.deltaspike.data.impl.handler.QueryHandler$1.proceed(QueryHandler.java:119)
>
>                                 at
> org.apache.deltaspike.jpa.impl.transaction.ResourceLocalTransactionStrategy.execute(ResourceLocalTransactionStrategy.java:130)
>
>                                 at
> org.apache.deltaspike.data.impl.handler.QueryHandler.invoke(QueryHandler.java:111)
>
>                                 at
> org.apache.deltaspike.data.impl.handler.QueryHandler$$OwbNormalScopeProxy0.invoke(org/apache/deltaspike/data/impl/handler/QueryHandler.java)
>
>                                 at
> org.apache.deltaspike.proxy.spi.invocation.DeltaSpikeProxyInvocationHandler.proceed(DeltaSpikeProxyInvocationHandler.java:97)
>
>                                 at
> org.apache.deltaspike.proxy.spi.invocation.DeltaSpikeProxyInvocationContext.proceed(DeltaSpikeProxyInvocationContext.java:101)
>
>                                 at
> org.apache.deltaspike.jpa.impl.transaction.ResourceLocalTransactionStrategy.execute(ResourceLocalTransactionStrategy.java:130)
>
>                                 at
> org.apache.deltaspike.jpa.impl.transaction.TransactionalInterceptor.executeInTransaction(TransactionalInterceptor.java:57)
>
>                                 at
> sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>
>                                 at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
>
>                                 at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>
>                                 at
> java.lang.reflect.Method.invoke(Method.java:498)
>
>                                 at
> org.apache.webbeans.component.InterceptorBean.intercept(InterceptorBean.java:136)
>
>                                 at
> org.apache.deltaspike.proxy.spi.invocation.DeltaSpikeProxyInvocationContext.proceed(DeltaSpikeProxyInvocationContext.java:80)
>
>                                 at
> org.apache.deltaspike.proxy.spi.invocation.DeltaSpikeProxyInvocationHandler.invoke(DeltaSpikeProxyInvocationHandler.java:63)
>
>                                 at
> org.apache.deltaspike.proxy.spi.invocation.DeltaSpikeProxyInvocationHandler$$OwbNormalScopeProxy0.invoke(org/apache/deltaspike/proxy/spi/invocation/DeltaSpikeProxyInvocationHandler.java)
>
>                                 at
> com.kaltire.mix.tirelodge.dao.StorageRecordRepository$$DSPartialBeanProxy.updateStorageRecord(Unknown
> Source)
>
>                                 at
> com.kaltire.mix.tirelodge.camel.beans.EventProcessor.process(EventProcessor.java:96)
>
>                                 at
> sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>
>                                 at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
>
>                                 at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>
>                                 at
> java.lang.reflect.Method.invoke(Method.java:498)
>
>                                 at
> org.apache.webbeans.intercept.AbstractInvocationContext.directProceed(AbstractInvocationContext.java:113)
>
>                                 at
> org.apache.webbeans.intercept.AbstractInvocationContext.proceed(AbstractInvocationContext.java:106)
>
>                                 at
> org.apache.webbeans.intercept.InterceptorInvocationContext.proceed(InterceptorInvocationContext.java:67)
>
>                                 at
> org.apache.deltaspike.jpa.impl.transaction.ResourceLocalTransactionStrategy.execute(ResourceLocalTransactionStrategy.java:130)
>
>                                 at
> org.apache.deltaspike.jpa.impl.transaction.TransactionalInterceptor.executeInTransaction(TransactionalInterceptor.java:57)
>
>                                 at
> sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>
>                                 at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
>
>                                 at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>
>                                 at
> java.lang.reflect.Method.invoke(Method.java:498)
>
>                                 at
> org.apache.webbeans.component.InterceptorBean.intercept(InterceptorBean.java:136)
>
>                                 at
> org.apache.webbeans.intercept.InterceptorInvocationContext.proceed(InterceptorInvocationContext.java:63)
>
>                                 at
> org.apache.webbeans.intercept.DefaultInterceptorHandler.invoke(DefaultInterceptorHandler.java:139)
>
>                                 at
> com.kaltire.mix.tirelodge.camel.beans.EventProcessor$$OwbInterceptProxy0.process(com/kaltire/mix/tirelodge/camel/beans/EventProcessor.java)
>
>                                 at
> sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>
>                                 at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
>
>                                 at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>
>                                 at
> java.lang.reflect.Method.invoke(Method.java:498)
>
>                                 at
> org.apache.camel.support.ObjectHelper.invokeMethodSafe(ObjectHelper.java:209)
>
>                                 at
> org.apache.camel.component.bean.MethodInfo.invoke(MethodInfo.java:421)
>
>                                 at
> org.apache.camel.component.bean.MethodInfo$1.doProceed(MethodInfo.java:242)
>
>                                 at
> org.apache.camel.component.bean.MethodInfo$1.proceed(MethodInfo.java:213)
>
>                                 at
> org.apache.camel.component.bean.AbstractBeanProcessor.process(AbstractBeanProcessor.java:154)
>
>                                 at
> org.apache.camel.component.bean.BeanProcessor.process(BeanProcessor.java:56)
>
>                                 at
> org.apache.camel.management.DefaultInstrumentationProcessor.process(DefaultInstrumentationProcessor.java:91)
>
>                                 at
> org.apache.camel.processor.errorhandler.RedeliveryErrorHandler$RedeliveryTask.doRun(RedeliveryErrorHandler.java:702)
>
>                                 at
> org.apache.camel.processor.errorhandler.RedeliveryErrorHandler$RedeliveryTask.run(RedeliveryErrorHandler.java:616)
>
>                                 ... 72 common frames omitted
>
>                 Caused by: org.hibernate.exception.SQLGrammarException:
> could not execute statement
>
>                                 at
> org.hibernate.exception.internal.SQLExceptionTypeDelegate.convert(SQLExceptionTypeDelegate.java:82)
>
>                                 at
> org.hibernate.exception.internal.StandardSQLExceptionConverter.convert(StandardSQLExceptionConverter.java:49)
>
>                                 at
> org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:124)
>
>                                 at
> org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:109)
>
>                                 at
> org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.executeUpdate(ResultSetReturnImpl.java:189)
>
>                                 at
> org.hibernate.engine.query.spi.NativeSQLQueryPlan.performExecuteUpdate(NativeSQLQueryPlan.java:204)
>
>                                 at
> org.hibernate.internal.SessionImpl.executeNativeUpdate(SessionImpl.java:1238)
>
>                                 at
> org.hibernate.internal.SQLQueryImpl.executeUpdate(SQLQueryImpl.java:401)
>
>                                 at
> org.hibernate.ejb.QueryImpl.internalExecuteUpdate(QueryImpl.java:198)
>
>                                 at
> org.hibernate.ejb.AbstractQueryImpl.executeUpdate(AbstractQueryImpl.java:102)
>
>                                 ... 131 common frames omitted
>
>                 Caused by: java.sql.SQLSyntaxErrorException: Table
> 'KTDN_TM.badTable doesn't exist
>
>                                 at
> com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:120)
>
>                                 at
> com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:97)
>
>                                 at
> com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:122)
>
>                                 at
> com.mysql.cj.jdbc.ClientPreparedStatement.executeInternal(ClientPreparedStatement.java:953)
>
>                                 at
> com.mysql.cj.jdbc.ClientPreparedStatement.executeUpdateInternal(ClientPreparedStatement.java:1092)
>
>                                 at
> com.mysql.cj.jdbc.ClientPreparedStatement.executeUpdateInternal(ClientPreparedStatement.java:1040)
>
>                                 at
> com.mysql.cj.jdbc.ClientPreparedStatement.executeLargeUpdate(ClientPreparedStatement.java:1347)
>
>                                 at
> com.mysql.cj.jdbc.ClientPreparedStatement.executeUpdate(ClientPreparedStatement.java:1025)
>
>                                 at
> sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>
>                                 at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
>
>                                 at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>
>                                 at
> java.lang.reflect.Method.invoke(Method.java:498)
>
>                                 at
> org.apache.tomcat.jdbc.pool.StatementFacade$StatementProxy.invoke(StatementFacade.java:114)
>
>                                 at
> com.sun.proxy.$Proxy238.executeUpdate(Unknown Source)
>
>                                 at
> org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.executeUpdate(ResultSetReturnImpl.java:186)
>
>                                 ... 136 common frames omitted
>
>
>
> Updating the pom.xml to use Camel 3.5.0 I see multiple entries like this
> during the boot (16 times to be exact):
>
>
>
> 2020-09-08 10:24:00.174 [http-nio-8081-exec-4] WARN
> o.a.c.c.t.TransactionalJtaTransactionPolicy - Could not find the
> transaction manager through java:/TransactionManager
>
>
>
> Then this (same stacktrace and message) 5 times:
>
>
>
> 2020-09-08 11:53:23.487 [Thread-0 (ActiveMQ-client] WARN
> o.a.c.jta.TransactionErrorHandler - Transaction rollback (0x41543024)
> redelivered(true) for (MessageId: ID:07638789-f1fb-11ea-b2f4-564c8aece8ca
> on ExchangeId: ID-Kal030841-1599591203098-0-2) caught: null
>
> 2020-09-08 11:53:23.496 [Thread-0 (ActiveMQ-client] ERROR
> o.a.c.jta.TransactionErrorHandler - Failed delivery for (MessageId:
> ID:07638789-f1fb-11ea-b2f4-564c8aece8ca on ExchangeId:
> ID-Kal030841-1599591203098-0-2). Exhausted after delivery attempt: 1
> caught: java.lang.NullPointerException
>
>
>
> Message History (complete message history is disabled)
>
>
> ---------------------------------------------------------------------------------------------------------------------------------------
>
> RouteId              ProcessorId
> Processor
> Elapsed (ms)
>
> [easybook-events   ] [easybook-events   ]
> [from[sjms://topic:kt.mix.easybook.events?durableSubscriptionId=tire-lodge-dev&]
> [        31]
>
>                 ...
>
> [easybook-events   ] [transacted1       ]
> [transacted
> ] [         0]
>
>
>
> Stacktrace
>
>
> ---------------------------------------------------------------------------------------------------------------------------------------
>
>
>
> java.lang.NullPointerException: null
>
>                 at
> org.apache.camel.cdi.transaction.TransactionalJtaTransactionPolicy.hasActiveTransaction(TransactionalJtaTransactionPolicy.java:114)
>
>                 at
> org.apache.camel.cdi.transaction.RequiredJtaTransactionPolicy.run(RequiredJtaTransactionPolicy.java:26)
>
>                 at
> org.apache.camel.jta.TransactionErrorHandler.doInTransactionTemplate(TransactionErrorHandler.java:186)
>
>                 at
> org.apache.camel.jta.TransactionErrorHandler.processInTransaction(TransactionErrorHandler.java:137)
>
>                 at
> org.apache.camel.jta.TransactionErrorHandler.process(TransactionErrorHandler.java:101)
>
>                 at
> org.apache.camel.jta.TransactionErrorHandler.process(TransactionErrorHandler.java:110)
>
>                 at
> org.apache.camel.processor.errorhandler.RedeliveryErrorHandler$SimpleTask.run(RedeliveryErrorHandler.java:404)
>
>                 at
> org.apache.camel.impl.engine.DefaultReactiveExecutor$Worker.schedule(DefaultReactiveExecutor.java:148)
>
>                 at
> org.apache.camel.impl.engine.DefaultReactiveExecutor.scheduleMain(DefaultReactiveExecutor.java:60)
>
>                 at
> org.apache.camel.processor.Pipeline.process(Pipeline.java:147)
>
>                 at
> org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:287)
>
>                 at
> org.apache.camel.impl.engine.DefaultAsyncProcessorAwaitManager.process(DefaultAsyncProcessorAwaitManager.java:83)
>
>                 at
> org.apache.camel.support.AsyncProcessorSupport.process(AsyncProcessorSupport.java:41)
>
>                 at
> org.apache.camel.component.sjms.consumer.InOnlyMessageHandler.handleMessage(InOnlyMessageHandler.java:53)
>
>                 at
> org.apache.camel.component.sjms.consumer.AbstractMessageHandler.onMessage(AbstractMessageHandler.java:81)
>
>                 at
> org.apache.activemq.artemis.jms.client.JMSMessageListenerWrapper.onMessage(JMSMessageListenerWrapper.java:110)
>
>                 at
> org.apache.activemq.artemis.core.client.impl.ClientConsumerImpl.callOnMessage(ClientConsumerImpl.java:1030)
>
>                 at
> org.apache.activemq.artemis.core.client.impl.ClientConsumerImpl.access$400(ClientConsumerImpl.java:49)
>
>                 at
> org.apache.activemq.artemis.core.client.impl.ClientConsumerImpl$Runner.run(ClientConsumerImpl.java:1153)
>
>                 at
> org.apache.activemq.artemis.utils.actors.OrderedExecutor.doTask(OrderedExecutor.java:42)
>
>                 at
> org.apache.activemq.artemis.utils.actors.OrderedExecutor.doTask(OrderedExecutor.java:31)
>
>                 at
> org.apache.activemq.artemis.utils.actors.ProcessorBase.executePendingTasks(ProcessorBase.java:65)
>
>                 at
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
>
>                 at
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
>
>                 at
> org.apache.activemq.artemis.utils.ActiveMQThreadFactory$1.run(ActiveMQThreadFactory.java:118)
>
>
>
> And then JMS message disappears from the topic.
>
> Note when using 3.4.5  message stays unacknowledged, I will stick to 3.4.5
> for now… Please let me know if you need any more info.
>
>
>
> Cheers,
>
> Dmitry
>
>
>
>
>
> *From:* Shultz, Dmitry
> *Sent:* Wednesday, September 2, 2020 9:17 PM
> *To:* Zheng Feng <zf...@redhat.com>>; users@camel.apache.org<ma...@camel.apache.org>
> *Subject:* Re: CDI + SJMS + transacted
>
>
>
> You are right, I forgot to specify transacted=true on the endpoint uri...
>
> To be exact I looked at all the places (even changed the AMQ connection
> URL :) except this probably because for some stupid reason wishfully
> thought the .transacted() on the route is enough for the component to set
> it true automagically.
>
> The interesting thing is that it worked (infinite redeliveries) - message
> was not committed to the broker (not lost) without the URI change just by
> using the JTA error handler builder (comes with CDI component). Now it
> works even with no redeliveries configured at all, but they are  never
> stopping (do there is some good automation already:)
> ------------------------------
>
> *From:* Zheng Feng <zf...@redhat.com>>
> *Sent:* 01 September 2020 23:09
> *To:* users@camel.apache.org<ma...@camel.apache.org> <us...@camel.apache.org>>
> *Subject:* Re: CDI + SJMS + transacted
>
>
>
> Yeah, TomEE could provide the "java:/TransactionManager" since it is a J2EE
> container. I wonder if you use the "transacted=true" option on the sjms
> consumer which will rollback the transaction if the router is failed.
>
>
> On Tue, Sep 1, 2020 at 4:35 AM Shultz, Dmitry <Dm...@kaltire.com>>
> wrote:
>
> > Thanks for the reply Zheng.
> >
> > I'm running very similar code in the TomEE and It doesn't fail on NPE.
> See
> > similar behaviour though:
> >
> > [Thread-0 (ActiveMQ-client] WARN  o.a.c.jta.TransactionErrorHandler -
> > Transaction rollback (0x30730302) redelivered(false) for (MessageId:
> > ID:9fd77209-ebc6-11ea-955a-1ee7171b8787 on ExchangeId:
> > ID-Kal030841-1598904862181-0-2) caught: test
> >
> > And after process restart the message is gone.
> >
> > I can confirm that when I use infinite re-delivery (the error handler
> > never exhausted) the message stays in the durable topic as forever even
> > after restart. So, I'm not sure if my expectation are correct i.e. does
> it
> > supposed to stay in the topic after error handler redeliveries are
> > exhausted?
> >
> > Cheers,
> > Dmitry
> >
> >
> > -----Original Message-----
> > From: Zheng Feng [mailto:zfeng@redhat.com<ma...@redhat.com> <zf...@redhat.com>>]
> > Sent: Sunday, August 30, 2020 8:58 AM
> > To: users@camel.apache.org<ma...@camel.apache.org>
> > Subject: Re: CDI + SJMS + transacted
> >
> > Hi Dmitry,
> >
> > It seems that SJMS [1]  currently only supports the use of internal JMS
> > Transactions. There is no support for the Camel Transaction Processor or
> > the Java Transaction API (JTA). Also if you want to use the JTA
> transaction
> > provided by the camel-cdi, the TransactionManager should be available via
> > JNDI "java:/TransactionManager". Then you are running the camel in the
> > standalone environment, and the transaction manager should be provided by
> > the third party implementation, such as Narayana ( you can find the jta
> > standalone example here [2]). The NPE I think should be fixed by
> > CAMEL-14918 [3], and I will try to backport it to the 3.4.x
> >
> > Regards,
> > Zheng Feng
> >
> > [1]
> >
> https://urldefense.com/v3/__https://camel.apache.org/components/latest/sjms-component.html__;!!LdWlNaMnLCM!OJ-X6YfRy0exjKJ8PNWy-d5aHbD6mgnBfTRZXXKak6kEojLVTmcKwcF4puKY9P1BTwqO$<https://urldefense.com/v3/__https:/camel.apache.org/components/latest/sjms-component.html__;!!LdWlNaMnLCM!OJ-X6YfRy0exjKJ8PNWy-d5aHbD6mgnBfTRZXXKak6kEojLVTmcKwcF4puKY9P1BTwqO$>
> <https://urldefense.com/v3/__https:/camel.apache.org/components/latest/sjms-component.html__;!!LdWlNaMnLCM!OJ-X6YfRy0exjKJ8PNWy-d5aHbD6mgnBfTRZXXKak6kEojLVTmcKwcF4puKY9P1BTwqO$>
> > [2]
> >
> https://urldefense.com/v3/__https://github.com/jbosstm/quickstart/tree/master/jta-1_2-standalone__;!!LdWlNaMnLCM!OJ-X6YfRy0exjKJ8PNWy-d5aHbD6mgnBfTRZXXKak6kEojLVTmcKwcF4puKY9Py3UShj$<https://urldefense.com/v3/__https:/github.com/jbosstm/quickstart/tree/master/jta-1_2-standalone__;!!LdWlNaMnLCM!OJ-X6YfRy0exjKJ8PNWy-d5aHbD6mgnBfTRZXXKak6kEojLVTmcKwcF4puKY9Py3UShj$>
> <https://urldefense.com/v3/__https:/github.com/jbosstm/quickstart/tree/master/jta-1_2-standalone__;!!LdWlNaMnLCM!OJ-X6YfRy0exjKJ8PNWy-d5aHbD6mgnBfTRZXXKak6kEojLVTmcKwcF4puKY9Py3UShj$>
> > [3]
> >
> >
> https://urldefense.com/v3/__https://github.com/apache/camel/commit/4421b2bba294dd8828621684c7670f78d811ecd8*diff-773b20d331dac13fb17acfa0f58ac01f__;Iw!!LdWlNaMnLCM!OJ-X6YfRy0exjKJ8PNWy-d5aHbD6mgnBfTRZXXKak6kEojLVTmcKwcF4puKY9F_CLTBw$<https://urldefense.com/v3/__https:/github.com/apache/camel/commit/4421b2bba294dd8828621684c7670f78d811ecd8*diff-773b20d331dac13fb17acfa0f58ac01f__;Iw!!LdWlNaMnLCM!OJ-X6YfRy0exjKJ8PNWy-d5aHbD6mgnBfTRZXXKak6kEojLVTmcKwcF4puKY9F_CLTBw$>
> <https://urldefense.com/v3/__https:/github.com/apache/camel/commit/4421b2bba294dd8828621684c7670f78d811ecd8*diff-773b20d331dac13fb17acfa0f58ac01f__;Iw!!LdWlNaMnLCM!OJ-X6YfRy0exjKJ8PNWy-d5aHbD6mgnBfTRZXXKak6kEojLVTmcKwcF4puKY9F_CLTBw$>
> >
> > On Sat, Aug 29, 2020 at 5:50 AM Shultz, Dmitry <
> Dmitry_Shultz@kaltire.com<ma...@kaltire.com>>
> > wrote:
> >
> > > Hi All,
> > >
> > > I'm probably doing something  wrong/stupid, but I can't get the sjms
> > > (recent Camel, but same true for 2.25.2) to leave failed messages in
> > > the JMS topic (AMQ Artemis) after exception.
> > > This is what logged:
> > >
> > > [ctiveMQ-client-global-threads)] TransactionErrorHandler        WARN
> > > Transaction rollback (0x5cd1283) redelivered(false) for (MessageId:
> > > ID:bbaa590d-e975-11ea-9ad0-6c4b902fc0e1 on ExchangeId:
> > > ID-Kal030841-1598650245838-0-1) caught: null
> > > [ctiveMQ-client-global-threads)] TransactionErrorHandler        WARN
> > > Transaction rollback (0x5cd1283) redelivered(false) for (MessageId:
> > > ID:bbaa590d-e975-11ea-9ad0-6c4b902fc0e1 on ExchangeId:
> > > ID-Kal030841-1598650245838-0-1) caught: null
> > > [ctiveMQ-client-global-threads)] TransactionErrorHandler        WARN
> > > Transaction rollback (0x5cd1283) redelivered(false) for (MessageId:
> > > ID:bbaa590d-e975-11ea-9ad0-6c4b902fc0e1 on ExchangeId:
> > > ID-Kal030841-1598650245838-0-1) caught: null
> > > [ctiveMQ-client-global-threads)] TransactionErrorHandler        ERROR
> > > Failed delivery for (MessageId:
> > > ID:bbaa590d-e975-11ea-9ad0-6c4b902fc0e1 on
> > > ExchangeId: ID-Kal030841-1598650245838-0-1). Exhausted after delivery
> > > attempt: 3 caught: java.lang.NullPointerException
> > >
> > > Message History (complete message history is disabled)
> > >
> > >
> >
> ---------------------------------------------------------------------------------------------------------------------------------------
> > > RouteId              ProcessorId          Processor
> > >                                                 Elapsed (ms)
> > > [route1            ] [route1            ]
> > > [from[sjms://topic:topic:test?durableSubscriptionId=dmitr] [      1999]
> > >                 ...
> > > [route1            ] [transacted1       ] [transacted
> > >                                               ] [         0]
> > >
> > > Stacktrace
> > >
> > > ----------------------------------------------------------------------
> > > -----------------------------------------------------------------
> > >
> > > java.lang.NullPointerException: null
> > >                 at
> > > org.apache.camel.cdi.transaction.TransactionalJtaTransactionPolicy.has
> > > ActiveTransaction(TransactionalJtaTransactionPolicy.java:105)
> > > ~[camel-cdi-3.4.3.jar:3.4.3]
> > >                 at
> > > org.apache.camel.cdi.transaction.RequiredJtaTransactionPolicy.run(Requ
> > > iredJtaTransactionPolicy.java:26)
> > > ~[camel-cdi-3.4.3.jar:3.4.3]
> > >                 at
> > > org.apache.camel.jta.TransactionErrorHandler.doInTransactionTemplate(T
> > > ransactionErrorHandler.java:193)
> > > ~[camel-jta-3.4.3.jar:3.4.3]
> > >                 at
> > > org.apache.camel.jta.TransactionErrorHandler.processInTransaction(Tran
> > > sactionErrorHandler.java:144)
> > > ~[camel-jta-3.4.3.jar:3.4.3]
> > >                 at
> > > org.apache.camel.jta.TransactionErrorHandler.process(TransactionErrorH
> > > andler.java:108)
> > > ~[camel-jta-3.4.3.jar:3.4.3]
> > >                 at
> > > org.apache.camel.jta.TransactionErrorHandler.process(TransactionErrorH
> > > andler.java:117)
> > > ~[camel-jta-3.4.3.jar:3.4.3]
> > >                 at
> > > org.apache.camel.processor.errorhandler.RedeliveryErrorHandler$Redeliv
> > > eryTask.redeliver(RedeliveryErrorHandler.java:766)
> > > ~[camel-base-3.4.3.jar:3.4.3]
> > >                 at
> > > org.apache.camel.impl.engine.DefaultReactiveExecutor$Worker.schedule(D
> > > efaultReactiveExecutor.java:148)
> > > ~[camel-base-3.4.3.jar:3.4.3]
> > >                 at
> > > org.apache.camel.impl.engine.DefaultReactiveExecutor.scheduleMain(Defa
> > > ultReactiveExecutor.java:60)
> > > ~[camel-base-3.4.3.jar:3.4.3]
> > >                 at
> > > org.apache.camel.processor.Pipeline.process(Pipeline.java:147)
> > > ~[camel-base-3.4.3.jar:3.4.3]
> > >                 at
> > > org.apache.camel.processor.CamelInternalProcessor.process(CamelInterna
> > > lProcessor.java:286)
> > > ~[camel-base-3.4.3.jar:3.4.3]
> > >                 at
> > > org.apache.camel.impl.engine.DefaultAsyncProcessorAwaitManager.process
> > > (DefaultAsyncProcessorAwaitManager.java:83)
> > > ~[camel-base-3.4.3.jar:3.4.3]
> > >                 at
> > > org.apache.camel.support.AsyncProcessorSupport.process(AsyncProcessorS
> > > upport.java:40)
> > > ~[camel-support-3.4.3.jar:3.4.3]
> > >                 at
> > > org.apache.camel.component.sjms.consumer.InOnlyMessageHandler.handleMe
> > > ssage(InOnlyMessageHandler.java:52)
> > > ~[camel-sjms-3.4.3.jar:3.4.3]
> > >                 at
> > > org.apache.camel.component.sjms.consumer.AbstractMessageHandler.onMess
> > > age(AbstractMessageHandler.java:81)
> > > ~[camel-sjms-3.4.3.jar:3.4.3]
> > >                 at
> > > org.apache.activemq.artemis.jms.client.JMSMessageListenerWrapper.onMes
> > > sage(JMSMessageListenerWrapper.java:110)
> > > ~[artemis-jms-client-2.14.0.jar:2.14.0]
> > >                 at
> > > org.apache.activemq.artemis.core.client.impl.ClientConsumerImpl.callOn
> > > Message(ClientConsumerImpl.java:1030)
> > > ~[artemis-core-client-2.14.0.jar:2.14.0]
> > >
> > > So, it looks like rollback is kicked off, but when I restart the
> > > process message is gone from the JMS topic.
> > >
> > > Sample reproducer  (generated using
> > > -DarchetypeArtifactId=camel-archetype-cdi as described here
> > > https://urldefense.com/v3/__https://camel.apache.org/components/latest<https://urldefense.com/v3/__https:/camel.apache.org/components/latest>
> <https://urldefense.com/v3/__https:/camel.apache.org/components/latest>
> > > /others/cdi.html__;!!LdWlNaMnLCM!OJ-X6YfRy0exjKJ8PNWy-d5aHbD6mgnBfTRZX
> > > XKak6kEojLVTmcKwcF4puKY9NnrgwcA$  ) is here
> > > https://urldefense.com/v3/__https://github.com/zeppelinux/CamelCDISjms<https://urldefense.com/v3/__https:/github.com/zeppelinux/CamelCDISjms>
> <https://urldefense.com/v3/__https:/github.com/zeppelinux/CamelCDISjms>
> > > Test__;!!LdWlNaMnLCM!OJ-X6YfRy0exjKJ8PNWy-d5aHbD6mgnBfTRZXXKak6kEojLVT
> > > mcKwcF4puKY9HBU5Opk$
> > > Please  have a look.
> > >
> > > Cheers,
> > > Dmitry
> > >
> >
>

Re: CDI + SJMS + transacted

Posted by Romain Manni-Bucau <rm...@gmail.com>.
In hibernate configuration, you can try to force the transaction manager
lokup hibernate.transaction.jta.platform=
org.apache.openejb.hibernate.OpenEJBJtaPlatform2 (if you use older versions
with the older hibernate key just drop the "2" at the end of the platform
and if you use a very old hibernate version (manager_lookup_class), then
use org.apache.openejb.hibernate.TransactionManagerLookup)

Romain Manni-Bucau
@rmannibucau <https://twitter.com/rmannibucau> |  Blog
<https://rmannibucau.metawerx.net/> | Old Blog
<http://rmannibucau.wordpress.com> | Github <https://github.com/rmannibucau> |
LinkedIn <https://www.linkedin.com/in/rmannibucau> | Book
<https://www.packtpub.com/application-development/java-ee-8-high-performance>


Le mer. 9 sept. 2020 à 09:42, Zheng Feng <zf...@redhat.com> a écrit :

> Hi Dmitry,
>
> It seems that the TransactionManager can not be accessed via
> "java:/TransactionManager" and I am not an expert of TomEE also I am not
> sure if there is a way to set the transaction manager jndi name in the
> configuration file ?
>
> Regards,
> Zheng Feng
>
> On Wed, Sep 9, 2020 at 3:18 AM Shultz, Dmitry <Dm...@kaltire.com>
> wrote:
>
> > Zheng,
> >
> >
> >
> > I’m still having problem and it seems to behave differently running on
> the
> > same TomEE version (7.0.6) but different Camel 3+ versions.
> >
> >
> >
> > To reproduce  I corrupted the query (handled by Deltaspike Data Module
> > repository).
> >
> >
> >
> > When it runs (fails) with Camel 3.4.5 it behaves as expected the first
> > time, but when it tries to redeliver the same JMS message it complains
> with
> > ‘Cannot join transaction: do not override
> > hibernate.transaction.factory_class’. Here is the full stack for
> redelivery:
> >
> >
> >
> > 2020-09-08 11:07:56.428 [Thread-0 (ActiveMQ-client] WARN
> > c.k.m.c.DeadLetterChannelBuilderProducer - redelivery attempt 1 to
> > direct://process
> >
> > 2020-09-08 11:07:56.440 [Thread-0 (ActiveMQ-client] WARN
> > o.h.ejb.AbstractEntityManagerImpl - HHH000326: Cannot join transaction:
> do
> > not override hibernate.transaction.factory_class
> >
> > 2020-09-08 11:07:56.442 [Thread-0 (ActiveMQ-client] ERROR
> > c.k.m.c.DeadLetterChannelBuilderProducer - processing failed with:
> >
> > javax.persistence.TransactionRequiredException: No active JTA transaction
> > on joinTransaction call
> >
> >                 at
> >
> org.hibernate.ejb.AbstractEntityManagerImpl.joinTransaction(AbstractEntityManagerImpl.java:1233)
> >
> >                 at
> >
> org.hibernate.ejb.AbstractEntityManagerImpl.joinTransaction(AbstractEntityManagerImpl.java:1183)
> >
> >                 at
> >
> org.apache.deltaspike.jpa.impl.transaction.BeanManagedUserTransactionStrategy.beforeProceed(BeanManagedUserTransactionStrategy.java:171)
> >
> >                 at
> >
> org.apache.deltaspike.jpa.impl.transaction.EnvironmentAwareTransactionStrategy.beforeProceed(EnvironmentAwareTransactionStrategy.java:109)
> >
> >                 at
> >
> org.apache.deltaspike.jpa.impl.transaction.ResourceLocalTransactionStrategy.execute(ResourceLocalTransactionStrategy.java:127)
> >
> >                 at
> >
> org.apache.deltaspike.jpa.impl.transaction.TransactionalInterceptor.executeInTransaction(TransactionalInterceptor.java:57)
> >
> >                 at sun.reflect.NativeMethodAccessorImpl.invoke0(Native
> > Method)
> >
> >                 at
> >
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
> >
> >                 at
> >
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> >
> >                 at java.lang.reflect.Method.invoke(Method.java:498)
> >
> >                 at
> >
> org.apache.webbeans.component.InterceptorBean.intercept(InterceptorBean.java:136)
> >
> >                 at
> >
> org.apache.webbeans.intercept.InterceptorInvocationContext.proceed(InterceptorInvocationContext.java:63)
> >
> >                 at
> >
> org.apache.webbeans.intercept.DefaultInterceptorHandler.invoke(DefaultInterceptorHandler.java:139)
> >
> >                 at
> >
> com.kaltire.mix.tirelodge.camel.beans.EventProcessor$$OwbInterceptProxy0.process(com/kaltire/mix/tirelodge/camel/beans/EventProcessor.java)
> >
> >                 at sun.reflect.NativeMethodAccessorImpl.invoke0(Native
> > Method)
> >
> >                 at
> >
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
> >
> >                 at
> >
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> >
> >                 at java.lang.reflect.Method.invoke(Method.java:498)
> >
> >                 at
> >
> org.apache.camel.support.ObjectHelper.invokeMethodSafe(ObjectHelper.java:209)
> >
> >                 at
> > org.apache.camel.component.bean.MethodInfo.invoke(MethodInfo.java:421)
> >
> >                 at
> >
> org.apache.camel.component.bean.MethodInfo$1.doProceed(MethodInfo.java:242)
> >
> >                 at
> > org.apache.camel.component.bean.MethodInfo$1.proceed(MethodInfo.java:213)
> >
> >                 at
> >
> org.apache.camel.component.bean.AbstractBeanProcessor.process(AbstractBeanProcessor.java:154)
> >
> >                 at
> >
> org.apache.camel.component.bean.BeanProcessor.process(BeanProcessor.java:56)
> >
> >                 at
> >
> org.apache.camel.management.DefaultInstrumentationProcessor.process(DefaultInstrumentationProcessor.java:91)
> >
> >                 at
> >
> org.apache.camel.processor.errorhandler.RedeliveryErrorHandler$RedeliveryTask.redeliver(RedeliveryErrorHandler.java:766)
> >
> >                 at
> >
> org.apache.camel.impl.engine.DefaultReactiveExecutor$Worker.schedule(DefaultReactiveExecutor.java:148)
> >
> >                 at
> >
> org.apache.camel.impl.engine.DefaultReactiveExecutor.scheduleSync(DefaultReactiveExecutor.java:65)
> >
> >                 at
> >
> org.apache.camel.processor.errorhandler.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:175)
> >
> >                 at
> >
> org.apache.camel.impl.engine.DefaultAsyncProcessorAwaitManager.process(DefaultAsyncProcessorAwaitManager.java:83)
> >
> >                 at
> >
> org.apache.camel.processor.errorhandler.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:158)
> >
> >                 at
> >
> org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:260)
> >
> >                 at
> >
> org.apache.camel.processor.ChoiceProcessor.process(ChoiceProcessor.java:115)
> >
> >                 at
> >
> org.apache.camel.impl.engine.DefaultAsyncProcessorAwaitManager.process(DefaultAsyncProcessorAwaitManager.java:83)
> >
> >                 at
> >
> org.apache.camel.support.AsyncProcessorSupport.process(AsyncProcessorSupport.java:40)
> >
> >                 at
> >
> org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:260)
> >
> >                 at
> >
> org.apache.camel.impl.engine.DefaultAsyncProcessorAwaitManager.process(DefaultAsyncProcessorAwaitManager.java:83)
> >
> >                 at
> >
> org.apache.camel.support.AsyncProcessorSupport.process(AsyncProcessorSupport.java:40)
> >
> >                 at
> >
> org.apache.camel.jta.TransactionErrorHandler.processByErrorHandler(TransactionErrorHandler.java:242)
> >
> >                 at
> >
> org.apache.camel.jta.TransactionErrorHandler$1.run(TransactionErrorHandler.java:203)
> >
> >                 at
> >
> org.apache.camel.cdi.transaction.TransactionalJtaTransactionPolicy.runWithTransaction(TransactionalJtaTransactionPolicy.java:51)
> >
> >                 at
> >
> org.apache.camel.cdi.transaction.RequiredJtaTransactionPolicy.run(RequiredJtaTransactionPolicy.java:26)
> >
> >                 at
> >
> org.apache.camel.jta.TransactionErrorHandler.doInTransactionTemplate(TransactionErrorHandler.java:193)
> >
> >                 at
> >
> org.apache.camel.jta.TransactionErrorHandler.processInTransaction(TransactionErrorHandler.java:144)
> >
> >                 at
> >
> org.apache.camel.jta.TransactionErrorHandler.process(TransactionErrorHandler.java:108)
> >
> >                 at
> >
> org.apache.camel.jta.TransactionErrorHandler.process(TransactionErrorHandler.java:117)
> >
> >                 at
> >
> org.apache.camel.processor.errorhandler.RedeliveryErrorHandler$SimpleTask.run(RedeliveryErrorHandler.java:395)
> >
> >                 at
> >
> org.apache.camel.impl.engine.DefaultReactiveExecutor$Worker.schedule(DefaultReactiveExecutor.java:148)
> >
> >                 at
> >
> org.apache.camel.impl.engine.DefaultReactiveExecutor.scheduleSync(DefaultReactiveExecutor.java:65)
> >
> >                 at
> >
> org.apache.camel.processor.errorhandler.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:175)
> >
> >                 at
> >
> org.apache.camel.impl.engine.DefaultAsyncProcessorAwaitManager.process(DefaultAsyncProcessorAwaitManager.java:83)
> >
> >                 at
> >
> org.apache.camel.processor.errorhandler.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:158)
> >
> >                 at
> >
> org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:260)
> >
> >                 at
> > org.apache.camel.processor.Pipeline$PipelineTask.run(Pipeline.java:90)
> >
> >                 at
> >
> org.apache.camel.impl.engine.DefaultReactiveExecutor$Worker.schedule(DefaultReactiveExecutor.java:148)
> >
> >                 at
> >
> org.apache.camel.impl.engine.DefaultReactiveExecutor.scheduleSync(DefaultReactiveExecutor.java:65)
> >
> >                 at
> > org.apache.camel.processor.Pipeline.process(Pipeline.java:145)
> >
> >                 at
> >
> org.apache.camel.impl.engine.DefaultAsyncProcessorAwaitManager.process(DefaultAsyncProcessorAwaitManager.java:83)
> >
> >                 at
> >
> org.apache.camel.support.AsyncProcessorSupport.process(AsyncProcessorSupport.java:40)
> >
> >                 at
> >
> org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:260)
> >
> >                 at
> >
> org.apache.camel.component.direct.DirectProducer.process(DirectProducer.java:66)
> >
> >                 at
> > org.apache.camel.processor.SendProcessor.process(SendProcessor.java:168)
> >
> >                 at
> >
> org.apache.camel.impl.engine.DefaultAsyncProcessorAwaitManager.process(DefaultAsyncProcessorAwaitManager.java:83)
> >
> >                 at
> >
> org.apache.camel.support.AsyncProcessorSupport.process(AsyncProcessorSupport.java:40)
> >
> >                 at
> >
> org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:260)
> >
> >                 at
> > org.apache.camel.processor.Pipeline$PipelineTask.run(Pipeline.java:90)
> >
> >                 at
> >
> org.apache.camel.impl.engine.DefaultReactiveExecutor$Worker.schedule(DefaultReactiveExecutor.java:148)
> >
> >                 at
> >
> org.apache.camel.impl.engine.DefaultReactiveExecutor.scheduleSync(DefaultReactiveExecutor.java:65)
> >
> >                 at
> > org.apache.camel.processor.Pipeline.process(Pipeline.java:145)
> >
> >                 at
> >
> org.apache.camel.impl.engine.DefaultAsyncProcessorAwaitManager.process(DefaultAsyncProcessorAwaitManager.java:83)
> >
> >                 at
> >
> org.apache.camel.support.AsyncProcessorSupport.process(AsyncProcessorSupport.java:40)
> >
> >                 at
> >
> org.apache.camel.jta.TransactionErrorHandler.processByErrorHandler(TransactionErrorHandler.java:242)
> >
> >                 at
> >
> org.apache.camel.jta.TransactionErrorHandler$1.run(TransactionErrorHandler.java:203)
> >
> >                 at
> >
> org.apache.camel.cdi.transaction.TransactionalJtaTransactionPolicy.runWithTransaction(TransactionalJtaTransactionPolicy.java:51)
> >
> >                 at
> >
> org.apache.camel.cdi.transaction.RequiredJtaTransactionPolicy.run(RequiredJtaTransactionPolicy.java:26)
> >
> >                 at
> >
> org.apache.camel.jta.TransactionErrorHandler.doInTransactionTemplate(TransactionErrorHandler.java:193)
> >
> >                 at
> >
> org.apache.camel.jta.TransactionErrorHandler.processInTransaction(TransactionErrorHandler.java:144)
> >
> >                 at
> >
> org.apache.camel.jta.TransactionErrorHandler.process(TransactionErrorHandler.java:108)
> >
> >                 at
> >
> org.apache.camel.jta.TransactionErrorHandler.process(TransactionErrorHandler.java:117)
> >
> >                 at
> >
> org.apache.camel.processor.errorhandler.RedeliveryErrorHandler$SimpleTask.run(RedeliveryErrorHandler.java:395)
> >
> >                 at
> >
> org.apache.camel.impl.engine.DefaultReactiveExecutor$Worker.schedule(DefaultReactiveExecutor.java:148)
> >
> >                 at
> >
> org.apache.camel.impl.engine.DefaultReactiveExecutor.scheduleMain(DefaultReactiveExecutor.java:60)
> >
> >                 at
> > org.apache.camel.processor.Pipeline.process(Pipeline.java:147)
> >
> >                 at
> >
> org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:286)
> >
> >                 at
> >
> org.apache.camel.impl.engine.DefaultAsyncProcessorAwaitManager.process(DefaultAsyncProcessorAwaitManager.java:83)
> >
> >                 at
> >
> org.apache.camel.support.AsyncProcessorSupport.process(AsyncProcessorSupport.java:40)
> >
> >                 at
> >
> org.apache.camel.component.sjms.consumer.InOnlyMessageHandler.handleMessage(InOnlyMessageHandler.java:52)
> >
> >                 at
> >
> org.apache.camel.component.sjms.consumer.AbstractMessageHandler.onMessage(AbstractMessageHandler.java:81)
> >
> >                 at
> >
> org.apache.activemq.artemis.jms.client.JMSMessageListenerWrapper.onMessage(JMSMessageListenerWrapper.java:110)
> >
> >                 at
> >
> org.apache.activemq.artemis.core.client.impl.ClientConsumerImpl.callOnMessage(ClientConsumerImpl.java:1030)
> >
> >                 at
> >
> org.apache.activemq.artemis.core.client.impl.ClientConsumerImpl.access$400(ClientConsumerImpl.java:49)
> >
> >                 at
> >
> org.apache.activemq.artemis.core.client.impl.ClientConsumerImpl$Runner.run(ClientConsumerImpl.java:1153)
> >
> >                 at
> >
> org.apache.activemq.artemis.utils.actors.OrderedExecutor.doTask(OrderedExecutor.java:42)
> >
> >                 at
> >
> org.apache.activemq.artemis.utils.actors.OrderedExecutor.doTask(OrderedExecutor.java:31)
> >
> >                 at
> >
> org.apache.activemq.artemis.utils.actors.ProcessorBase.executePendingTasks(ProcessorBase.java:65)
> >
> >                 at
> >
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
> >
> >                 at
> >
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
> >
> >                 at
> >
> org.apache.activemq.artemis.utils.ActiveMQThreadFactory$1.run(ActiveMQThreadFactory.java:118)
> >
> >                 Suppressed: javax.persistence.PersistenceException:
> > org.hibernate.exception.SQLGrammarException: could not execute statement
> >
> >                                 at
> >
> org.hibernate.ejb.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1387)
> >
> >                                 at
> >
> org.hibernate.ejb.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1310)
> >
> >                                 at
> >
> org.hibernate.ejb.AbstractEntityManagerImpl.throwPersistenceException(AbstractEntityManagerImpl.java:1397)
> >
> >                                 at
> >
> org.hibernate.ejb.AbstractQueryImpl.executeUpdate(AbstractQueryImpl.java:111)
> >
> >                                 at
> >
> org.apache.deltaspike.data.impl.builder.result.QueryProcessorFactory$ExecuteUpdateQueryProcessor.executeQuery(QueryProcessorFactory.java:192)
> >
> >                                 at
> >
> org.apache.deltaspike.data.impl.handler.CdiQueryInvocationContext.executeQuery(CdiQueryInvocationContext.java:253)
> >
> >                                 at
> >
> org.apache.deltaspike.data.impl.builder.AnnotatedQueryBuilder.execute(AnnotatedQueryBuilder.java:51)
> >
> >                                 at
> >
> org.apache.deltaspike.data.impl.builder.QueryBuilder.executeQuery(QueryBuilder.java:57)
> >
> >                                 at
> >
> org.apache.deltaspike.data.impl.builder.AnnotatedQueryBuilder$$OwbNormalScopeProxy0.executeQuery(org/apache/deltaspike/data/impl/builder/AnnotatedQueryBuilder.java)
> >
> >                                 at
> >
> org.apache.deltaspike.data.impl.tx.TransactionalQueryRunner$1.proceed(TransactionalQueryRunner.java:73)
> >
> >                                 at
> >
> org.apache.deltaspike.jpa.impl.transaction.ResourceLocalTransactionStrategy.execute(ResourceLocalTransactionStrategy.java:130)
> >
> >                                 at
> >
> org.apache.deltaspike.data.impl.tx.TransactionalQueryRunner.executeTransactional(TransactionalQueryRunner.java:68)
> >
> >                                 at
> >
> org.apache.deltaspike.data.impl.tx.TransactionalQueryRunner.executeQuery(TransactionalQueryRunner.java:50)
> >
> >                                 at
> >
> org.apache.deltaspike.data.impl.tx.TransactionalQueryRunner$$OwbNormalScopeProxy0.executeQuery(org/apache/deltaspike/data/impl/tx/TransactionalQueryRunner.java)
> >
> >                                 at
> >
> org.apache.deltaspike.data.impl.handler.QueryHandler.process(QueryHandler.java:151)
> >
> >                                 at
> >
> org.apache.deltaspike.data.impl.handler.QueryHandler$1.proceed(QueryHandler.java:119)
> >
> >                                 at
> >
> org.apache.deltaspike.jpa.impl.transaction.ResourceLocalTransactionStrategy.execute(ResourceLocalTransactionStrategy.java:130)
> >
> >                                 at
> >
> org.apache.deltaspike.data.impl.handler.QueryHandler.invoke(QueryHandler.java:111)
> >
> >                                 at
> >
> org.apache.deltaspike.data.impl.handler.QueryHandler$$OwbNormalScopeProxy0.invoke(org/apache/deltaspike/data/impl/handler/QueryHandler.java)
> >
> >                                 at
> >
> org.apache.deltaspike.proxy.spi.invocation.DeltaSpikeProxyInvocationHandler.proceed(DeltaSpikeProxyInvocationHandler.java:97)
> >
> >                                 at
> >
> org.apache.deltaspike.proxy.spi.invocation.DeltaSpikeProxyInvocationContext.proceed(DeltaSpikeProxyInvocationContext.java:101)
> >
> >                                 at
> >
> org.apache.deltaspike.jpa.impl.transaction.ResourceLocalTransactionStrategy.execute(ResourceLocalTransactionStrategy.java:130)
> >
> >                                 at
> >
> org.apache.deltaspike.jpa.impl.transaction.TransactionalInterceptor.executeInTransaction(TransactionalInterceptor.java:57)
> >
> >                                 at
> > sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> >
> >                                 at
> >
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
> >
> >                                 at
> >
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> >
> >                                 at
> > java.lang.reflect.Method.invoke(Method.java:498)
> >
> >                                 at
> >
> org.apache.webbeans.component.InterceptorBean.intercept(InterceptorBean.java:136)
> >
> >                                 at
> >
> org.apache.deltaspike.proxy.spi.invocation.DeltaSpikeProxyInvocationContext.proceed(DeltaSpikeProxyInvocationContext.java:80)
> >
> >                                 at
> >
> org.apache.deltaspike.proxy.spi.invocation.DeltaSpikeProxyInvocationHandler.invoke(DeltaSpikeProxyInvocationHandler.java:63)
> >
> >                                 at
> >
> org.apache.deltaspike.proxy.spi.invocation.DeltaSpikeProxyInvocationHandler$$OwbNormalScopeProxy0.invoke(org/apache/deltaspike/proxy/spi/invocation/DeltaSpikeProxyInvocationHandler.java)
> >
> >                                 at
> >
> com.kaltire.mix.tirelodge.dao.StorageRecordRepository$$DSPartialBeanProxy.updateStorageRecord(Unknown
> > Source)
> >
> >                                 at
> >
> com.kaltire.mix.tirelodge.camel.beans.EventProcessor.process(EventProcessor.java:96)
> >
> >                                 at
> > sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> >
> >                                 at
> >
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
> >
> >                                 at
> >
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> >
> >                                 at
> > java.lang.reflect.Method.invoke(Method.java:498)
> >
> >                                 at
> >
> org.apache.webbeans.intercept.AbstractInvocationContext.directProceed(AbstractInvocationContext.java:113)
> >
> >                                 at
> >
> org.apache.webbeans.intercept.AbstractInvocationContext.proceed(AbstractInvocationContext.java:106)
> >
> >                                 at
> >
> org.apache.webbeans.intercept.InterceptorInvocationContext.proceed(InterceptorInvocationContext.java:67)
> >
> >                                 at
> >
> org.apache.deltaspike.jpa.impl.transaction.ResourceLocalTransactionStrategy.execute(ResourceLocalTransactionStrategy.java:130)
> >
> >                                 at
> >
> org.apache.deltaspike.jpa.impl.transaction.TransactionalInterceptor.executeInTransaction(TransactionalInterceptor.java:57)
> >
> >                                 at
> > sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> >
> >                                 at
> >
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
> >
> >                                 at
> >
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> >
> >                                 at
> > java.lang.reflect.Method.invoke(Method.java:498)
> >
> >                                 at
> >
> org.apache.webbeans.component.InterceptorBean.intercept(InterceptorBean.java:136)
> >
> >                                 at
> >
> org.apache.webbeans.intercept.InterceptorInvocationContext.proceed(InterceptorInvocationContext.java:63)
> >
> >                                 at
> >
> org.apache.webbeans.intercept.DefaultInterceptorHandler.invoke(DefaultInterceptorHandler.java:139)
> >
> >                                 at
> >
> com.kaltire.mix.tirelodge.camel.beans.EventProcessor$$OwbInterceptProxy0.process(com/kaltire/mix/tirelodge/camel/beans/EventProcessor.java)
> >
> >                                 at
> > sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> >
> >                                 at
> >
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
> >
> >                                 at
> >
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> >
> >                                 at
> > java.lang.reflect.Method.invoke(Method.java:498)
> >
> >                                 at
> >
> org.apache.camel.support.ObjectHelper.invokeMethodSafe(ObjectHelper.java:209)
> >
> >                                 at
> > org.apache.camel.component.bean.MethodInfo.invoke(MethodInfo.java:421)
> >
> >                                 at
> >
> org.apache.camel.component.bean.MethodInfo$1.doProceed(MethodInfo.java:242)
> >
> >                                 at
> > org.apache.camel.component.bean.MethodInfo$1.proceed(MethodInfo.java:213)
> >
> >                                 at
> >
> org.apache.camel.component.bean.AbstractBeanProcessor.process(AbstractBeanProcessor.java:154)
> >
> >                                 at
> >
> org.apache.camel.component.bean.BeanProcessor.process(BeanProcessor.java:56)
> >
> >                                 at
> >
> org.apache.camel.management.DefaultInstrumentationProcessor.process(DefaultInstrumentationProcessor.java:91)
> >
> >                                 at
> >
> org.apache.camel.processor.errorhandler.RedeliveryErrorHandler$RedeliveryTask.doRun(RedeliveryErrorHandler.java:702)
> >
> >                                 at
> >
> org.apache.camel.processor.errorhandler.RedeliveryErrorHandler$RedeliveryTask.run(RedeliveryErrorHandler.java:616)
> >
> >                                 ... 72 common frames omitted
> >
> >                 Caused by: org.hibernate.exception.SQLGrammarException:
> > could not execute statement
> >
> >                                 at
> >
> org.hibernate.exception.internal.SQLExceptionTypeDelegate.convert(SQLExceptionTypeDelegate.java:82)
> >
> >                                 at
> >
> org.hibernate.exception.internal.StandardSQLExceptionConverter.convert(StandardSQLExceptionConverter.java:49)
> >
> >                                 at
> >
> org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:124)
> >
> >                                 at
> >
> org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:109)
> >
> >                                 at
> >
> org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.executeUpdate(ResultSetReturnImpl.java:189)
> >
> >                                 at
> >
> org.hibernate.engine.query.spi.NativeSQLQueryPlan.performExecuteUpdate(NativeSQLQueryPlan.java:204)
> >
> >                                 at
> >
> org.hibernate.internal.SessionImpl.executeNativeUpdate(SessionImpl.java:1238)
> >
> >                                 at
> > org.hibernate.internal.SQLQueryImpl.executeUpdate(SQLQueryImpl.java:401)
> >
> >                                 at
> > org.hibernate.ejb.QueryImpl.internalExecuteUpdate(QueryImpl.java:198)
> >
> >                                 at
> >
> org.hibernate.ejb.AbstractQueryImpl.executeUpdate(AbstractQueryImpl.java:102)
> >
> >                                 ... 131 common frames omitted
> >
> >                 Caused by: java.sql.SQLSyntaxErrorException: Table
> > 'KTDN_TM.badTable doesn't exist
> >
> >                                 at
> >
> com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:120)
> >
> >                                 at
> >
> com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:97)
> >
> >                                 at
> >
> com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:122)
> >
> >                                 at
> >
> com.mysql.cj.jdbc.ClientPreparedStatement.executeInternal(ClientPreparedStatement.java:953)
> >
> >                                 at
> >
> com.mysql.cj.jdbc.ClientPreparedStatement.executeUpdateInternal(ClientPreparedStatement.java:1092)
> >
> >                                 at
> >
> com.mysql.cj.jdbc.ClientPreparedStatement.executeUpdateInternal(ClientPreparedStatement.java:1040)
> >
> >                                 at
> >
> com.mysql.cj.jdbc.ClientPreparedStatement.executeLargeUpdate(ClientPreparedStatement.java:1347)
> >
> >                                 at
> >
> com.mysql.cj.jdbc.ClientPreparedStatement.executeUpdate(ClientPreparedStatement.java:1025)
> >
> >                                 at
> > sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> >
> >                                 at
> >
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
> >
> >                                 at
> >
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> >
> >                                 at
> > java.lang.reflect.Method.invoke(Method.java:498)
> >
> >                                 at
> >
> org.apache.tomcat.jdbc.pool.StatementFacade$StatementProxy.invoke(StatementFacade.java:114)
> >
> >                                 at
> > com.sun.proxy.$Proxy238.executeUpdate(Unknown Source)
> >
> >                                 at
> >
> org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.executeUpdate(ResultSetReturnImpl.java:186)
> >
> >                                 ... 136 common frames omitted
> >
> >
> >
> > Updating the pom.xml to use Camel 3.5.0 I see multiple entries like this
> > during the boot (16 times to be exact):
> >
> >
> >
> > 2020-09-08 10:24:00.174 [http-nio-8081-exec-4] WARN
> > o.a.c.c.t.TransactionalJtaTransactionPolicy - Could not find the
> > transaction manager through java:/TransactionManager
> >
> >
> >
> > Then this (same stacktrace and message) 5 times:
> >
> >
> >
> > 2020-09-08 11:53:23.487 [Thread-0 (ActiveMQ-client] WARN
> > o.a.c.jta.TransactionErrorHandler - Transaction rollback (0x41543024)
> > redelivered(true) for (MessageId: ID:07638789-f1fb-11ea-b2f4-564c8aece8ca
> > on ExchangeId: ID-Kal030841-1599591203098-0-2) caught: null
> >
> > 2020-09-08 11:53:23.496 [Thread-0 (ActiveMQ-client] ERROR
> > o.a.c.jta.TransactionErrorHandler - Failed delivery for (MessageId:
> > ID:07638789-f1fb-11ea-b2f4-564c8aece8ca on ExchangeId:
> > ID-Kal030841-1599591203098-0-2). Exhausted after delivery attempt: 1
> > caught: java.lang.NullPointerException
> >
> >
> >
> > Message History (complete message history is disabled)
> >
> >
> >
> ---------------------------------------------------------------------------------------------------------------------------------------
> >
> > RouteId              ProcessorId
> > Processor
> > Elapsed (ms)
> >
> > [easybook-events   ] [easybook-events   ]
> >
> [from[sjms://topic:kt.mix.easybook.events?durableSubscriptionId=tire-lodge-dev&]
> > [        31]
> >
> >                 ...
> >
> > [easybook-events   ] [transacted1       ]
> > [transacted
> > ] [         0]
> >
> >
> >
> > Stacktrace
> >
> >
> >
> ---------------------------------------------------------------------------------------------------------------------------------------
> >
> >
> >
> > java.lang.NullPointerException: null
> >
> >                 at
> >
> org.apache.camel.cdi.transaction.TransactionalJtaTransactionPolicy.hasActiveTransaction(TransactionalJtaTransactionPolicy.java:114)
> >
> >                 at
> >
> org.apache.camel.cdi.transaction.RequiredJtaTransactionPolicy.run(RequiredJtaTransactionPolicy.java:26)
> >
> >                 at
> >
> org.apache.camel.jta.TransactionErrorHandler.doInTransactionTemplate(TransactionErrorHandler.java:186)
> >
> >                 at
> >
> org.apache.camel.jta.TransactionErrorHandler.processInTransaction(TransactionErrorHandler.java:137)
> >
> >                 at
> >
> org.apache.camel.jta.TransactionErrorHandler.process(TransactionErrorHandler.java:101)
> >
> >                 at
> >
> org.apache.camel.jta.TransactionErrorHandler.process(TransactionErrorHandler.java:110)
> >
> >                 at
> >
> org.apache.camel.processor.errorhandler.RedeliveryErrorHandler$SimpleTask.run(RedeliveryErrorHandler.java:404)
> >
> >                 at
> >
> org.apache.camel.impl.engine.DefaultReactiveExecutor$Worker.schedule(DefaultReactiveExecutor.java:148)
> >
> >                 at
> >
> org.apache.camel.impl.engine.DefaultReactiveExecutor.scheduleMain(DefaultReactiveExecutor.java:60)
> >
> >                 at
> > org.apache.camel.processor.Pipeline.process(Pipeline.java:147)
> >
> >                 at
> >
> org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:287)
> >
> >                 at
> >
> org.apache.camel.impl.engine.DefaultAsyncProcessorAwaitManager.process(DefaultAsyncProcessorAwaitManager.java:83)
> >
> >                 at
> >
> org.apache.camel.support.AsyncProcessorSupport.process(AsyncProcessorSupport.java:41)
> >
> >                 at
> >
> org.apache.camel.component.sjms.consumer.InOnlyMessageHandler.handleMessage(InOnlyMessageHandler.java:53)
> >
> >                 at
> >
> org.apache.camel.component.sjms.consumer.AbstractMessageHandler.onMessage(AbstractMessageHandler.java:81)
> >
> >                 at
> >
> org.apache.activemq.artemis.jms.client.JMSMessageListenerWrapper.onMessage(JMSMessageListenerWrapper.java:110)
> >
> >                 at
> >
> org.apache.activemq.artemis.core.client.impl.ClientConsumerImpl.callOnMessage(ClientConsumerImpl.java:1030)
> >
> >                 at
> >
> org.apache.activemq.artemis.core.client.impl.ClientConsumerImpl.access$400(ClientConsumerImpl.java:49)
> >
> >                 at
> >
> org.apache.activemq.artemis.core.client.impl.ClientConsumerImpl$Runner.run(ClientConsumerImpl.java:1153)
> >
> >                 at
> >
> org.apache.activemq.artemis.utils.actors.OrderedExecutor.doTask(OrderedExecutor.java:42)
> >
> >                 at
> >
> org.apache.activemq.artemis.utils.actors.OrderedExecutor.doTask(OrderedExecutor.java:31)
> >
> >                 at
> >
> org.apache.activemq.artemis.utils.actors.ProcessorBase.executePendingTasks(ProcessorBase.java:65)
> >
> >                 at
> >
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
> >
> >                 at
> >
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
> >
> >                 at
> >
> org.apache.activemq.artemis.utils.ActiveMQThreadFactory$1.run(ActiveMQThreadFactory.java:118)
> >
> >
> >
> > And then JMS message disappears from the topic.
> >
> > Note when using 3.4.5  message stays unacknowledged, I will stick to
> 3.4.5
> > for now… Please let me know if you need any more info.
> >
> >
> >
> > Cheers,
> >
> > Dmitry
> >
> >
> >
> >
> >
> > *From:* Shultz, Dmitry
> > *Sent:* Wednesday, September 2, 2020 9:17 PM
> > *To:* Zheng Feng <zf...@redhat.com>; users@camel.apache.org
> > *Subject:* Re: CDI + SJMS + transacted
> >
> >
> >
> > You are right, I forgot to specify transacted=true on the endpoint uri...
> >
> > To be exact I looked at all the places (even changed the AMQ connection
> > URL :) except this probably because for some stupid reason wishfully
> > thought the .transacted() on the route is enough for the component to set
> > it true automagically.
> >
> > The interesting thing is that it worked (infinite redeliveries) - message
> > was not committed to the broker (not lost) without the URI change just by
> > using the JTA error handler builder (comes with CDI component). Now it
> > works even with no redeliveries configured at all, but they are  never
> > stopping (do there is some good automation already:)
> > ------------------------------
> >
> > *From:* Zheng Feng <zf...@redhat.com>
> > *Sent:* 01 September 2020 23:09
> > *To:* users@camel.apache.org <us...@camel.apache.org>
> > *Subject:* Re: CDI + SJMS + transacted
> >
> >
> >
> > Yeah, TomEE could provide the "java:/TransactionManager" since it is a
> J2EE
> > container. I wonder if you use the "transacted=true" option on the sjms
> > consumer which will rollback the transaction if the router is failed.
> >
> >
> > On Tue, Sep 1, 2020 at 4:35 AM Shultz, Dmitry <Dmitry_Shultz@kaltire.com
> >
> > wrote:
> >
> > > Thanks for the reply Zheng.
> > >
> > > I'm running very similar code in the TomEE and It doesn't fail on NPE.
> > See
> > > similar behaviour though:
> > >
> > > [Thread-0 (ActiveMQ-client] WARN  o.a.c.jta.TransactionErrorHandler -
> > > Transaction rollback (0x30730302) redelivered(false) for (MessageId:
> > > ID:9fd77209-ebc6-11ea-955a-1ee7171b8787 on ExchangeId:
> > > ID-Kal030841-1598904862181-0-2) caught: test
> > >
> > > And after process restart the message is gone.
> > >
> > > I can confirm that when I use infinite re-delivery (the error handler
> > > never exhausted) the message stays in the durable topic as forever even
> > > after restart. So, I'm not sure if my expectation are correct i.e. does
> > it
> > > supposed to stay in the topic after error handler redeliveries are
> > > exhausted?
> > >
> > > Cheers,
> > > Dmitry
> > >
> > >
> > > -----Original Message-----
> > > From: Zheng Feng [mailto:zfeng@redhat.com <zf...@redhat.com>]
> > > Sent: Sunday, August 30, 2020 8:58 AM
> > > To: users@camel.apache.org
> > > Subject: Re: CDI + SJMS + transacted
> > >
> > > Hi Dmitry,
> > >
> > > It seems that SJMS [1]  currently only supports the use of internal JMS
> > > Transactions. There is no support for the Camel Transaction Processor
> or
> > > the Java Transaction API (JTA). Also if you want to use the JTA
> > transaction
> > > provided by the camel-cdi, the TransactionManager should be available
> via
> > > JNDI "java:/TransactionManager". Then you are running the camel in the
> > > standalone environment, and the transaction manager should be provided
> by
> > > the third party implementation, such as Narayana ( you can find the jta
> > > standalone example here [2]). The NPE I think should be fixed by
> > > CAMEL-14918 [3], and I will try to backport it to the 3.4.x
> > >
> > > Regards,
> > > Zheng Feng
> > >
> > > [1]
> > >
> >
> https://urldefense.com/v3/__https://camel.apache.org/components/latest/sjms-component.html__;!!LdWlNaMnLCM!OJ-X6YfRy0exjKJ8PNWy-d5aHbD6mgnBfTRZXXKak6kEojLVTmcKwcF4puKY9P1BTwqO$
> > <
> https://urldefense.com/v3/__https:/camel.apache.org/components/latest/sjms-component.html__;!!LdWlNaMnLCM!OJ-X6YfRy0exjKJ8PNWy-d5aHbD6mgnBfTRZXXKak6kEojLVTmcKwcF4puKY9P1BTwqO$
> >
> > > [2]
> > >
> >
> https://urldefense.com/v3/__https://github.com/jbosstm/quickstart/tree/master/jta-1_2-standalone__;!!LdWlNaMnLCM!OJ-X6YfRy0exjKJ8PNWy-d5aHbD6mgnBfTRZXXKak6kEojLVTmcKwcF4puKY9Py3UShj$
> > <
> https://urldefense.com/v3/__https:/github.com/jbosstm/quickstart/tree/master/jta-1_2-standalone__;!!LdWlNaMnLCM!OJ-X6YfRy0exjKJ8PNWy-d5aHbD6mgnBfTRZXXKak6kEojLVTmcKwcF4puKY9Py3UShj$
> >
> > > [3]
> > >
> > >
> >
> https://urldefense.com/v3/__https://github.com/apache/camel/commit/4421b2bba294dd8828621684c7670f78d811ecd8*diff-773b20d331dac13fb17acfa0f58ac01f__;Iw!!LdWlNaMnLCM!OJ-X6YfRy0exjKJ8PNWy-d5aHbD6mgnBfTRZXXKak6kEojLVTmcKwcF4puKY9F_CLTBw$
> > <
> https://urldefense.com/v3/__https:/github.com/apache/camel/commit/4421b2bba294dd8828621684c7670f78d811ecd8*diff-773b20d331dac13fb17acfa0f58ac01f__;Iw!!LdWlNaMnLCM!OJ-X6YfRy0exjKJ8PNWy-d5aHbD6mgnBfTRZXXKak6kEojLVTmcKwcF4puKY9F_CLTBw$
> >
> > >
> > > On Sat, Aug 29, 2020 at 5:50 AM Shultz, Dmitry <
> > Dmitry_Shultz@kaltire.com>
> > > wrote:
> > >
> > > > Hi All,
> > > >
> > > > I'm probably doing something  wrong/stupid, but I can't get the sjms
> > > > (recent Camel, but same true for 2.25.2) to leave failed messages in
> > > > the JMS topic (AMQ Artemis) after exception.
> > > > This is what logged:
> > > >
> > > > [ctiveMQ-client-global-threads)] TransactionErrorHandler        WARN
> > > > Transaction rollback (0x5cd1283) redelivered(false) for (MessageId:
> > > > ID:bbaa590d-e975-11ea-9ad0-6c4b902fc0e1 on ExchangeId:
> > > > ID-Kal030841-1598650245838-0-1) caught: null
> > > > [ctiveMQ-client-global-threads)] TransactionErrorHandler        WARN
> > > > Transaction rollback (0x5cd1283) redelivered(false) for (MessageId:
> > > > ID:bbaa590d-e975-11ea-9ad0-6c4b902fc0e1 on ExchangeId:
> > > > ID-Kal030841-1598650245838-0-1) caught: null
> > > > [ctiveMQ-client-global-threads)] TransactionErrorHandler        WARN
> > > > Transaction rollback (0x5cd1283) redelivered(false) for (MessageId:
> > > > ID:bbaa590d-e975-11ea-9ad0-6c4b902fc0e1 on ExchangeId:
> > > > ID-Kal030841-1598650245838-0-1) caught: null
> > > > [ctiveMQ-client-global-threads)] TransactionErrorHandler        ERROR
> > > > Failed delivery for (MessageId:
> > > > ID:bbaa590d-e975-11ea-9ad0-6c4b902fc0e1 on
> > > > ExchangeId: ID-Kal030841-1598650245838-0-1). Exhausted after delivery
> > > > attempt: 3 caught: java.lang.NullPointerException
> > > >
> > > > Message History (complete message history is disabled)
> > > >
> > > >
> > >
> >
> ---------------------------------------------------------------------------------------------------------------------------------------
> > > > RouteId              ProcessorId          Processor
> > > >                                                 Elapsed (ms)
> > > > [route1            ] [route1            ]
> > > > [from[sjms://topic:topic:test?durableSubscriptionId=dmitr] [
> 1999]
> > > >                 ...
> > > > [route1            ] [transacted1       ] [transacted
> > > >                                               ] [         0]
> > > >
> > > > Stacktrace
> > > >
> > > >
> ----------------------------------------------------------------------
> > > > -----------------------------------------------------------------
> > > >
> > > > java.lang.NullPointerException: null
> > > >                 at
> > > >
> org.apache.camel.cdi.transaction.TransactionalJtaTransactionPolicy.has
> > > > ActiveTransaction(TransactionalJtaTransactionPolicy.java:105)
> > > > ~[camel-cdi-3.4.3.jar:3.4.3]
> > > >                 at
> > > >
> org.apache.camel.cdi.transaction.RequiredJtaTransactionPolicy.run(Requ
> > > > iredJtaTransactionPolicy.java:26)
> > > > ~[camel-cdi-3.4.3.jar:3.4.3]
> > > >                 at
> > > >
> org.apache.camel.jta.TransactionErrorHandler.doInTransactionTemplate(T
> > > > ransactionErrorHandler.java:193)
> > > > ~[camel-jta-3.4.3.jar:3.4.3]
> > > >                 at
> > > >
> org.apache.camel.jta.TransactionErrorHandler.processInTransaction(Tran
> > > > sactionErrorHandler.java:144)
> > > > ~[camel-jta-3.4.3.jar:3.4.3]
> > > >                 at
> > > >
> org.apache.camel.jta.TransactionErrorHandler.process(TransactionErrorH
> > > > andler.java:108)
> > > > ~[camel-jta-3.4.3.jar:3.4.3]
> > > >                 at
> > > >
> org.apache.camel.jta.TransactionErrorHandler.process(TransactionErrorH
> > > > andler.java:117)
> > > > ~[camel-jta-3.4.3.jar:3.4.3]
> > > >                 at
> > > >
> org.apache.camel.processor.errorhandler.RedeliveryErrorHandler$Redeliv
> > > > eryTask.redeliver(RedeliveryErrorHandler.java:766)
> > > > ~[camel-base-3.4.3.jar:3.4.3]
> > > >                 at
> > > >
> org.apache.camel.impl.engine.DefaultReactiveExecutor$Worker.schedule(D
> > > > efaultReactiveExecutor.java:148)
> > > > ~[camel-base-3.4.3.jar:3.4.3]
> > > >                 at
> > > >
> org.apache.camel.impl.engine.DefaultReactiveExecutor.scheduleMain(Defa
> > > > ultReactiveExecutor.java:60)
> > > > ~[camel-base-3.4.3.jar:3.4.3]
> > > >                 at
> > > > org.apache.camel.processor.Pipeline.process(Pipeline.java:147)
> > > > ~[camel-base-3.4.3.jar:3.4.3]
> > > >                 at
> > > >
> org.apache.camel.processor.CamelInternalProcessor.process(CamelInterna
> > > > lProcessor.java:286)
> > > > ~[camel-base-3.4.3.jar:3.4.3]
> > > >                 at
> > > >
> org.apache.camel.impl.engine.DefaultAsyncProcessorAwaitManager.process
> > > > (DefaultAsyncProcessorAwaitManager.java:83)
> > > > ~[camel-base-3.4.3.jar:3.4.3]
> > > >                 at
> > > >
> org.apache.camel.support.AsyncProcessorSupport.process(AsyncProcessorS
> > > > upport.java:40)
> > > > ~[camel-support-3.4.3.jar:3.4.3]
> > > >                 at
> > > >
> org.apache.camel.component.sjms.consumer.InOnlyMessageHandler.handleMe
> > > > ssage(InOnlyMessageHandler.java:52)
> > > > ~[camel-sjms-3.4.3.jar:3.4.3]
> > > >                 at
> > > >
> org.apache.camel.component.sjms.consumer.AbstractMessageHandler.onMess
> > > > age(AbstractMessageHandler.java:81)
> > > > ~[camel-sjms-3.4.3.jar:3.4.3]
> > > >                 at
> > > >
> org.apache.activemq.artemis.jms.client.JMSMessageListenerWrapper.onMes
> > > > sage(JMSMessageListenerWrapper.java:110)
> > > > ~[artemis-jms-client-2.14.0.jar:2.14.0]
> > > >                 at
> > > >
> org.apache.activemq.artemis.core.client.impl.ClientConsumerImpl.callOn
> > > > Message(ClientConsumerImpl.java:1030)
> > > > ~[artemis-core-client-2.14.0.jar:2.14.0]
> > > >
> > > > So, it looks like rollback is kicked off, but when I restart the
> > > > process message is gone from the JMS topic.
> > > >
> > > > Sample reproducer  (generated using
> > > > -DarchetypeArtifactId=camel-archetype-cdi as described here
> > > >
> https://urldefense.com/v3/__https://camel.apache.org/components/latest
> > <https://urldefense.com/v3/__https:/camel.apache.org/components/latest>
> > > >
> /others/cdi.html__;!!LdWlNaMnLCM!OJ-X6YfRy0exjKJ8PNWy-d5aHbD6mgnBfTRZX
> > > > XKak6kEojLVTmcKwcF4puKY9NnrgwcA$  ) is here
> > > >
> https://urldefense.com/v3/__https://github.com/zeppelinux/CamelCDISjms
> > <https://urldefense.com/v3/__https:/github.com/zeppelinux/CamelCDISjms>
> > > >
> Test__;!!LdWlNaMnLCM!OJ-X6YfRy0exjKJ8PNWy-d5aHbD6mgnBfTRZXXKak6kEojLVT
> > > > mcKwcF4puKY9HBU5Opk$
> > > > Please  have a look.
> > > >
> > > > Cheers,
> > > > Dmitry
> > > >
> > >
> >
>

Re: CDI + SJMS + transacted

Posted by Zheng Feng <zf...@redhat.com>.
Hi Dmitry,

It seems that the TransactionManager can not be accessed via
"java:/TransactionManager" and I am not an expert of TomEE also I am not
sure if there is a way to set the transaction manager jndi name in the
configuration file ?

Regards,
Zheng Feng

On Wed, Sep 9, 2020 at 3:18 AM Shultz, Dmitry <Dm...@kaltire.com>
wrote:

> Zheng,
>
>
>
> I’m still having problem and it seems to behave differently running on the
> same TomEE version (7.0.6) but different Camel 3+ versions.
>
>
>
> To reproduce  I corrupted the query (handled by Deltaspike Data Module
> repository).
>
>
>
> When it runs (fails) with Camel 3.4.5 it behaves as expected the first
> time, but when it tries to redeliver the same JMS message it complains with
> ‘Cannot join transaction: do not override
> hibernate.transaction.factory_class’. Here is the full stack for redelivery:
>
>
>
> 2020-09-08 11:07:56.428 [Thread-0 (ActiveMQ-client] WARN
> c.k.m.c.DeadLetterChannelBuilderProducer - redelivery attempt 1 to
> direct://process
>
> 2020-09-08 11:07:56.440 [Thread-0 (ActiveMQ-client] WARN
> o.h.ejb.AbstractEntityManagerImpl - HHH000326: Cannot join transaction: do
> not override hibernate.transaction.factory_class
>
> 2020-09-08 11:07:56.442 [Thread-0 (ActiveMQ-client] ERROR
> c.k.m.c.DeadLetterChannelBuilderProducer - processing failed with:
>
> javax.persistence.TransactionRequiredException: No active JTA transaction
> on joinTransaction call
>
>                 at
> org.hibernate.ejb.AbstractEntityManagerImpl.joinTransaction(AbstractEntityManagerImpl.java:1233)
>
>                 at
> org.hibernate.ejb.AbstractEntityManagerImpl.joinTransaction(AbstractEntityManagerImpl.java:1183)
>
>                 at
> org.apache.deltaspike.jpa.impl.transaction.BeanManagedUserTransactionStrategy.beforeProceed(BeanManagedUserTransactionStrategy.java:171)
>
>                 at
> org.apache.deltaspike.jpa.impl.transaction.EnvironmentAwareTransactionStrategy.beforeProceed(EnvironmentAwareTransactionStrategy.java:109)
>
>                 at
> org.apache.deltaspike.jpa.impl.transaction.ResourceLocalTransactionStrategy.execute(ResourceLocalTransactionStrategy.java:127)
>
>                 at
> org.apache.deltaspike.jpa.impl.transaction.TransactionalInterceptor.executeInTransaction(TransactionalInterceptor.java:57)
>
>                 at sun.reflect.NativeMethodAccessorImpl.invoke0(Native
> Method)
>
>                 at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
>
>                 at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>
>                 at java.lang.reflect.Method.invoke(Method.java:498)
>
>                 at
> org.apache.webbeans.component.InterceptorBean.intercept(InterceptorBean.java:136)
>
>                 at
> org.apache.webbeans.intercept.InterceptorInvocationContext.proceed(InterceptorInvocationContext.java:63)
>
>                 at
> org.apache.webbeans.intercept.DefaultInterceptorHandler.invoke(DefaultInterceptorHandler.java:139)
>
>                 at
> com.kaltire.mix.tirelodge.camel.beans.EventProcessor$$OwbInterceptProxy0.process(com/kaltire/mix/tirelodge/camel/beans/EventProcessor.java)
>
>                 at sun.reflect.NativeMethodAccessorImpl.invoke0(Native
> Method)
>
>                 at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
>
>                 at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>
>                 at java.lang.reflect.Method.invoke(Method.java:498)
>
>                 at
> org.apache.camel.support.ObjectHelper.invokeMethodSafe(ObjectHelper.java:209)
>
>                 at
> org.apache.camel.component.bean.MethodInfo.invoke(MethodInfo.java:421)
>
>                 at
> org.apache.camel.component.bean.MethodInfo$1.doProceed(MethodInfo.java:242)
>
>                 at
> org.apache.camel.component.bean.MethodInfo$1.proceed(MethodInfo.java:213)
>
>                 at
> org.apache.camel.component.bean.AbstractBeanProcessor.process(AbstractBeanProcessor.java:154)
>
>                 at
> org.apache.camel.component.bean.BeanProcessor.process(BeanProcessor.java:56)
>
>                 at
> org.apache.camel.management.DefaultInstrumentationProcessor.process(DefaultInstrumentationProcessor.java:91)
>
>                 at
> org.apache.camel.processor.errorhandler.RedeliveryErrorHandler$RedeliveryTask.redeliver(RedeliveryErrorHandler.java:766)
>
>                 at
> org.apache.camel.impl.engine.DefaultReactiveExecutor$Worker.schedule(DefaultReactiveExecutor.java:148)
>
>                 at
> org.apache.camel.impl.engine.DefaultReactiveExecutor.scheduleSync(DefaultReactiveExecutor.java:65)
>
>                 at
> org.apache.camel.processor.errorhandler.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:175)
>
>                 at
> org.apache.camel.impl.engine.DefaultAsyncProcessorAwaitManager.process(DefaultAsyncProcessorAwaitManager.java:83)
>
>                 at
> org.apache.camel.processor.errorhandler.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:158)
>
>                 at
> org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:260)
>
>                 at
> org.apache.camel.processor.ChoiceProcessor.process(ChoiceProcessor.java:115)
>
>                 at
> org.apache.camel.impl.engine.DefaultAsyncProcessorAwaitManager.process(DefaultAsyncProcessorAwaitManager.java:83)
>
>                 at
> org.apache.camel.support.AsyncProcessorSupport.process(AsyncProcessorSupport.java:40)
>
>                 at
> org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:260)
>
>                 at
> org.apache.camel.impl.engine.DefaultAsyncProcessorAwaitManager.process(DefaultAsyncProcessorAwaitManager.java:83)
>
>                 at
> org.apache.camel.support.AsyncProcessorSupport.process(AsyncProcessorSupport.java:40)
>
>                 at
> org.apache.camel.jta.TransactionErrorHandler.processByErrorHandler(TransactionErrorHandler.java:242)
>
>                 at
> org.apache.camel.jta.TransactionErrorHandler$1.run(TransactionErrorHandler.java:203)
>
>                 at
> org.apache.camel.cdi.transaction.TransactionalJtaTransactionPolicy.runWithTransaction(TransactionalJtaTransactionPolicy.java:51)
>
>                 at
> org.apache.camel.cdi.transaction.RequiredJtaTransactionPolicy.run(RequiredJtaTransactionPolicy.java:26)
>
>                 at
> org.apache.camel.jta.TransactionErrorHandler.doInTransactionTemplate(TransactionErrorHandler.java:193)
>
>                 at
> org.apache.camel.jta.TransactionErrorHandler.processInTransaction(TransactionErrorHandler.java:144)
>
>                 at
> org.apache.camel.jta.TransactionErrorHandler.process(TransactionErrorHandler.java:108)
>
>                 at
> org.apache.camel.jta.TransactionErrorHandler.process(TransactionErrorHandler.java:117)
>
>                 at
> org.apache.camel.processor.errorhandler.RedeliveryErrorHandler$SimpleTask.run(RedeliveryErrorHandler.java:395)
>
>                 at
> org.apache.camel.impl.engine.DefaultReactiveExecutor$Worker.schedule(DefaultReactiveExecutor.java:148)
>
>                 at
> org.apache.camel.impl.engine.DefaultReactiveExecutor.scheduleSync(DefaultReactiveExecutor.java:65)
>
>                 at
> org.apache.camel.processor.errorhandler.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:175)
>
>                 at
> org.apache.camel.impl.engine.DefaultAsyncProcessorAwaitManager.process(DefaultAsyncProcessorAwaitManager.java:83)
>
>                 at
> org.apache.camel.processor.errorhandler.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:158)
>
>                 at
> org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:260)
>
>                 at
> org.apache.camel.processor.Pipeline$PipelineTask.run(Pipeline.java:90)
>
>                 at
> org.apache.camel.impl.engine.DefaultReactiveExecutor$Worker.schedule(DefaultReactiveExecutor.java:148)
>
>                 at
> org.apache.camel.impl.engine.DefaultReactiveExecutor.scheduleSync(DefaultReactiveExecutor.java:65)
>
>                 at
> org.apache.camel.processor.Pipeline.process(Pipeline.java:145)
>
>                 at
> org.apache.camel.impl.engine.DefaultAsyncProcessorAwaitManager.process(DefaultAsyncProcessorAwaitManager.java:83)
>
>                 at
> org.apache.camel.support.AsyncProcessorSupport.process(AsyncProcessorSupport.java:40)
>
>                 at
> org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:260)
>
>                 at
> org.apache.camel.component.direct.DirectProducer.process(DirectProducer.java:66)
>
>                 at
> org.apache.camel.processor.SendProcessor.process(SendProcessor.java:168)
>
>                 at
> org.apache.camel.impl.engine.DefaultAsyncProcessorAwaitManager.process(DefaultAsyncProcessorAwaitManager.java:83)
>
>                 at
> org.apache.camel.support.AsyncProcessorSupport.process(AsyncProcessorSupport.java:40)
>
>                 at
> org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:260)
>
>                 at
> org.apache.camel.processor.Pipeline$PipelineTask.run(Pipeline.java:90)
>
>                 at
> org.apache.camel.impl.engine.DefaultReactiveExecutor$Worker.schedule(DefaultReactiveExecutor.java:148)
>
>                 at
> org.apache.camel.impl.engine.DefaultReactiveExecutor.scheduleSync(DefaultReactiveExecutor.java:65)
>
>                 at
> org.apache.camel.processor.Pipeline.process(Pipeline.java:145)
>
>                 at
> org.apache.camel.impl.engine.DefaultAsyncProcessorAwaitManager.process(DefaultAsyncProcessorAwaitManager.java:83)
>
>                 at
> org.apache.camel.support.AsyncProcessorSupport.process(AsyncProcessorSupport.java:40)
>
>                 at
> org.apache.camel.jta.TransactionErrorHandler.processByErrorHandler(TransactionErrorHandler.java:242)
>
>                 at
> org.apache.camel.jta.TransactionErrorHandler$1.run(TransactionErrorHandler.java:203)
>
>                 at
> org.apache.camel.cdi.transaction.TransactionalJtaTransactionPolicy.runWithTransaction(TransactionalJtaTransactionPolicy.java:51)
>
>                 at
> org.apache.camel.cdi.transaction.RequiredJtaTransactionPolicy.run(RequiredJtaTransactionPolicy.java:26)
>
>                 at
> org.apache.camel.jta.TransactionErrorHandler.doInTransactionTemplate(TransactionErrorHandler.java:193)
>
>                 at
> org.apache.camel.jta.TransactionErrorHandler.processInTransaction(TransactionErrorHandler.java:144)
>
>                 at
> org.apache.camel.jta.TransactionErrorHandler.process(TransactionErrorHandler.java:108)
>
>                 at
> org.apache.camel.jta.TransactionErrorHandler.process(TransactionErrorHandler.java:117)
>
>                 at
> org.apache.camel.processor.errorhandler.RedeliveryErrorHandler$SimpleTask.run(RedeliveryErrorHandler.java:395)
>
>                 at
> org.apache.camel.impl.engine.DefaultReactiveExecutor$Worker.schedule(DefaultReactiveExecutor.java:148)
>
>                 at
> org.apache.camel.impl.engine.DefaultReactiveExecutor.scheduleMain(DefaultReactiveExecutor.java:60)
>
>                 at
> org.apache.camel.processor.Pipeline.process(Pipeline.java:147)
>
>                 at
> org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:286)
>
>                 at
> org.apache.camel.impl.engine.DefaultAsyncProcessorAwaitManager.process(DefaultAsyncProcessorAwaitManager.java:83)
>
>                 at
> org.apache.camel.support.AsyncProcessorSupport.process(AsyncProcessorSupport.java:40)
>
>                 at
> org.apache.camel.component.sjms.consumer.InOnlyMessageHandler.handleMessage(InOnlyMessageHandler.java:52)
>
>                 at
> org.apache.camel.component.sjms.consumer.AbstractMessageHandler.onMessage(AbstractMessageHandler.java:81)
>
>                 at
> org.apache.activemq.artemis.jms.client.JMSMessageListenerWrapper.onMessage(JMSMessageListenerWrapper.java:110)
>
>                 at
> org.apache.activemq.artemis.core.client.impl.ClientConsumerImpl.callOnMessage(ClientConsumerImpl.java:1030)
>
>                 at
> org.apache.activemq.artemis.core.client.impl.ClientConsumerImpl.access$400(ClientConsumerImpl.java:49)
>
>                 at
> org.apache.activemq.artemis.core.client.impl.ClientConsumerImpl$Runner.run(ClientConsumerImpl.java:1153)
>
>                 at
> org.apache.activemq.artemis.utils.actors.OrderedExecutor.doTask(OrderedExecutor.java:42)
>
>                 at
> org.apache.activemq.artemis.utils.actors.OrderedExecutor.doTask(OrderedExecutor.java:31)
>
>                 at
> org.apache.activemq.artemis.utils.actors.ProcessorBase.executePendingTasks(ProcessorBase.java:65)
>
>                 at
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
>
>                 at
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
>
>                 at
> org.apache.activemq.artemis.utils.ActiveMQThreadFactory$1.run(ActiveMQThreadFactory.java:118)
>
>                 Suppressed: javax.persistence.PersistenceException:
> org.hibernate.exception.SQLGrammarException: could not execute statement
>
>                                 at
> org.hibernate.ejb.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1387)
>
>                                 at
> org.hibernate.ejb.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1310)
>
>                                 at
> org.hibernate.ejb.AbstractEntityManagerImpl.throwPersistenceException(AbstractEntityManagerImpl.java:1397)
>
>                                 at
> org.hibernate.ejb.AbstractQueryImpl.executeUpdate(AbstractQueryImpl.java:111)
>
>                                 at
> org.apache.deltaspike.data.impl.builder.result.QueryProcessorFactory$ExecuteUpdateQueryProcessor.executeQuery(QueryProcessorFactory.java:192)
>
>                                 at
> org.apache.deltaspike.data.impl.handler.CdiQueryInvocationContext.executeQuery(CdiQueryInvocationContext.java:253)
>
>                                 at
> org.apache.deltaspike.data.impl.builder.AnnotatedQueryBuilder.execute(AnnotatedQueryBuilder.java:51)
>
>                                 at
> org.apache.deltaspike.data.impl.builder.QueryBuilder.executeQuery(QueryBuilder.java:57)
>
>                                 at
> org.apache.deltaspike.data.impl.builder.AnnotatedQueryBuilder$$OwbNormalScopeProxy0.executeQuery(org/apache/deltaspike/data/impl/builder/AnnotatedQueryBuilder.java)
>
>                                 at
> org.apache.deltaspike.data.impl.tx.TransactionalQueryRunner$1.proceed(TransactionalQueryRunner.java:73)
>
>                                 at
> org.apache.deltaspike.jpa.impl.transaction.ResourceLocalTransactionStrategy.execute(ResourceLocalTransactionStrategy.java:130)
>
>                                 at
> org.apache.deltaspike.data.impl.tx.TransactionalQueryRunner.executeTransactional(TransactionalQueryRunner.java:68)
>
>                                 at
> org.apache.deltaspike.data.impl.tx.TransactionalQueryRunner.executeQuery(TransactionalQueryRunner.java:50)
>
>                                 at
> org.apache.deltaspike.data.impl.tx.TransactionalQueryRunner$$OwbNormalScopeProxy0.executeQuery(org/apache/deltaspike/data/impl/tx/TransactionalQueryRunner.java)
>
>                                 at
> org.apache.deltaspike.data.impl.handler.QueryHandler.process(QueryHandler.java:151)
>
>                                 at
> org.apache.deltaspike.data.impl.handler.QueryHandler$1.proceed(QueryHandler.java:119)
>
>                                 at
> org.apache.deltaspike.jpa.impl.transaction.ResourceLocalTransactionStrategy.execute(ResourceLocalTransactionStrategy.java:130)
>
>                                 at
> org.apache.deltaspike.data.impl.handler.QueryHandler.invoke(QueryHandler.java:111)
>
>                                 at
> org.apache.deltaspike.data.impl.handler.QueryHandler$$OwbNormalScopeProxy0.invoke(org/apache/deltaspike/data/impl/handler/QueryHandler.java)
>
>                                 at
> org.apache.deltaspike.proxy.spi.invocation.DeltaSpikeProxyInvocationHandler.proceed(DeltaSpikeProxyInvocationHandler.java:97)
>
>                                 at
> org.apache.deltaspike.proxy.spi.invocation.DeltaSpikeProxyInvocationContext.proceed(DeltaSpikeProxyInvocationContext.java:101)
>
>                                 at
> org.apache.deltaspike.jpa.impl.transaction.ResourceLocalTransactionStrategy.execute(ResourceLocalTransactionStrategy.java:130)
>
>                                 at
> org.apache.deltaspike.jpa.impl.transaction.TransactionalInterceptor.executeInTransaction(TransactionalInterceptor.java:57)
>
>                                 at
> sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>
>                                 at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
>
>                                 at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>
>                                 at
> java.lang.reflect.Method.invoke(Method.java:498)
>
>                                 at
> org.apache.webbeans.component.InterceptorBean.intercept(InterceptorBean.java:136)
>
>                                 at
> org.apache.deltaspike.proxy.spi.invocation.DeltaSpikeProxyInvocationContext.proceed(DeltaSpikeProxyInvocationContext.java:80)
>
>                                 at
> org.apache.deltaspike.proxy.spi.invocation.DeltaSpikeProxyInvocationHandler.invoke(DeltaSpikeProxyInvocationHandler.java:63)
>
>                                 at
> org.apache.deltaspike.proxy.spi.invocation.DeltaSpikeProxyInvocationHandler$$OwbNormalScopeProxy0.invoke(org/apache/deltaspike/proxy/spi/invocation/DeltaSpikeProxyInvocationHandler.java)
>
>                                 at
> com.kaltire.mix.tirelodge.dao.StorageRecordRepository$$DSPartialBeanProxy.updateStorageRecord(Unknown
> Source)
>
>                                 at
> com.kaltire.mix.tirelodge.camel.beans.EventProcessor.process(EventProcessor.java:96)
>
>                                 at
> sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>
>                                 at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
>
>                                 at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>
>                                 at
> java.lang.reflect.Method.invoke(Method.java:498)
>
>                                 at
> org.apache.webbeans.intercept.AbstractInvocationContext.directProceed(AbstractInvocationContext.java:113)
>
>                                 at
> org.apache.webbeans.intercept.AbstractInvocationContext.proceed(AbstractInvocationContext.java:106)
>
>                                 at
> org.apache.webbeans.intercept.InterceptorInvocationContext.proceed(InterceptorInvocationContext.java:67)
>
>                                 at
> org.apache.deltaspike.jpa.impl.transaction.ResourceLocalTransactionStrategy.execute(ResourceLocalTransactionStrategy.java:130)
>
>                                 at
> org.apache.deltaspike.jpa.impl.transaction.TransactionalInterceptor.executeInTransaction(TransactionalInterceptor.java:57)
>
>                                 at
> sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>
>                                 at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
>
>                                 at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>
>                                 at
> java.lang.reflect.Method.invoke(Method.java:498)
>
>                                 at
> org.apache.webbeans.component.InterceptorBean.intercept(InterceptorBean.java:136)
>
>                                 at
> org.apache.webbeans.intercept.InterceptorInvocationContext.proceed(InterceptorInvocationContext.java:63)
>
>                                 at
> org.apache.webbeans.intercept.DefaultInterceptorHandler.invoke(DefaultInterceptorHandler.java:139)
>
>                                 at
> com.kaltire.mix.tirelodge.camel.beans.EventProcessor$$OwbInterceptProxy0.process(com/kaltire/mix/tirelodge/camel/beans/EventProcessor.java)
>
>                                 at
> sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>
>                                 at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
>
>                                 at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>
>                                 at
> java.lang.reflect.Method.invoke(Method.java:498)
>
>                                 at
> org.apache.camel.support.ObjectHelper.invokeMethodSafe(ObjectHelper.java:209)
>
>                                 at
> org.apache.camel.component.bean.MethodInfo.invoke(MethodInfo.java:421)
>
>                                 at
> org.apache.camel.component.bean.MethodInfo$1.doProceed(MethodInfo.java:242)
>
>                                 at
> org.apache.camel.component.bean.MethodInfo$1.proceed(MethodInfo.java:213)
>
>                                 at
> org.apache.camel.component.bean.AbstractBeanProcessor.process(AbstractBeanProcessor.java:154)
>
>                                 at
> org.apache.camel.component.bean.BeanProcessor.process(BeanProcessor.java:56)
>
>                                 at
> org.apache.camel.management.DefaultInstrumentationProcessor.process(DefaultInstrumentationProcessor.java:91)
>
>                                 at
> org.apache.camel.processor.errorhandler.RedeliveryErrorHandler$RedeliveryTask.doRun(RedeliveryErrorHandler.java:702)
>
>                                 at
> org.apache.camel.processor.errorhandler.RedeliveryErrorHandler$RedeliveryTask.run(RedeliveryErrorHandler.java:616)
>
>                                 ... 72 common frames omitted
>
>                 Caused by: org.hibernate.exception.SQLGrammarException:
> could not execute statement
>
>                                 at
> org.hibernate.exception.internal.SQLExceptionTypeDelegate.convert(SQLExceptionTypeDelegate.java:82)
>
>                                 at
> org.hibernate.exception.internal.StandardSQLExceptionConverter.convert(StandardSQLExceptionConverter.java:49)
>
>                                 at
> org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:124)
>
>                                 at
> org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:109)
>
>                                 at
> org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.executeUpdate(ResultSetReturnImpl.java:189)
>
>                                 at
> org.hibernate.engine.query.spi.NativeSQLQueryPlan.performExecuteUpdate(NativeSQLQueryPlan.java:204)
>
>                                 at
> org.hibernate.internal.SessionImpl.executeNativeUpdate(SessionImpl.java:1238)
>
>                                 at
> org.hibernate.internal.SQLQueryImpl.executeUpdate(SQLQueryImpl.java:401)
>
>                                 at
> org.hibernate.ejb.QueryImpl.internalExecuteUpdate(QueryImpl.java:198)
>
>                                 at
> org.hibernate.ejb.AbstractQueryImpl.executeUpdate(AbstractQueryImpl.java:102)
>
>                                 ... 131 common frames omitted
>
>                 Caused by: java.sql.SQLSyntaxErrorException: Table
> 'KTDN_TM.badTable doesn't exist
>
>                                 at
> com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:120)
>
>                                 at
> com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:97)
>
>                                 at
> com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:122)
>
>                                 at
> com.mysql.cj.jdbc.ClientPreparedStatement.executeInternal(ClientPreparedStatement.java:953)
>
>                                 at
> com.mysql.cj.jdbc.ClientPreparedStatement.executeUpdateInternal(ClientPreparedStatement.java:1092)
>
>                                 at
> com.mysql.cj.jdbc.ClientPreparedStatement.executeUpdateInternal(ClientPreparedStatement.java:1040)
>
>                                 at
> com.mysql.cj.jdbc.ClientPreparedStatement.executeLargeUpdate(ClientPreparedStatement.java:1347)
>
>                                 at
> com.mysql.cj.jdbc.ClientPreparedStatement.executeUpdate(ClientPreparedStatement.java:1025)
>
>                                 at
> sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>
>                                 at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
>
>                                 at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>
>                                 at
> java.lang.reflect.Method.invoke(Method.java:498)
>
>                                 at
> org.apache.tomcat.jdbc.pool.StatementFacade$StatementProxy.invoke(StatementFacade.java:114)
>
>                                 at
> com.sun.proxy.$Proxy238.executeUpdate(Unknown Source)
>
>                                 at
> org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.executeUpdate(ResultSetReturnImpl.java:186)
>
>                                 ... 136 common frames omitted
>
>
>
> Updating the pom.xml to use Camel 3.5.0 I see multiple entries like this
> during the boot (16 times to be exact):
>
>
>
> 2020-09-08 10:24:00.174 [http-nio-8081-exec-4] WARN
> o.a.c.c.t.TransactionalJtaTransactionPolicy - Could not find the
> transaction manager through java:/TransactionManager
>
>
>
> Then this (same stacktrace and message) 5 times:
>
>
>
> 2020-09-08 11:53:23.487 [Thread-0 (ActiveMQ-client] WARN
> o.a.c.jta.TransactionErrorHandler - Transaction rollback (0x41543024)
> redelivered(true) for (MessageId: ID:07638789-f1fb-11ea-b2f4-564c8aece8ca
> on ExchangeId: ID-Kal030841-1599591203098-0-2) caught: null
>
> 2020-09-08 11:53:23.496 [Thread-0 (ActiveMQ-client] ERROR
> o.a.c.jta.TransactionErrorHandler - Failed delivery for (MessageId:
> ID:07638789-f1fb-11ea-b2f4-564c8aece8ca on ExchangeId:
> ID-Kal030841-1599591203098-0-2). Exhausted after delivery attempt: 1
> caught: java.lang.NullPointerException
>
>
>
> Message History (complete message history is disabled)
>
>
> ---------------------------------------------------------------------------------------------------------------------------------------
>
> RouteId              ProcessorId
> Processor
> Elapsed (ms)
>
> [easybook-events   ] [easybook-events   ]
> [from[sjms://topic:kt.mix.easybook.events?durableSubscriptionId=tire-lodge-dev&]
> [        31]
>
>                 ...
>
> [easybook-events   ] [transacted1       ]
> [transacted
> ] [         0]
>
>
>
> Stacktrace
>
>
> ---------------------------------------------------------------------------------------------------------------------------------------
>
>
>
> java.lang.NullPointerException: null
>
>                 at
> org.apache.camel.cdi.transaction.TransactionalJtaTransactionPolicy.hasActiveTransaction(TransactionalJtaTransactionPolicy.java:114)
>
>                 at
> org.apache.camel.cdi.transaction.RequiredJtaTransactionPolicy.run(RequiredJtaTransactionPolicy.java:26)
>
>                 at
> org.apache.camel.jta.TransactionErrorHandler.doInTransactionTemplate(TransactionErrorHandler.java:186)
>
>                 at
> org.apache.camel.jta.TransactionErrorHandler.processInTransaction(TransactionErrorHandler.java:137)
>
>                 at
> org.apache.camel.jta.TransactionErrorHandler.process(TransactionErrorHandler.java:101)
>
>                 at
> org.apache.camel.jta.TransactionErrorHandler.process(TransactionErrorHandler.java:110)
>
>                 at
> org.apache.camel.processor.errorhandler.RedeliveryErrorHandler$SimpleTask.run(RedeliveryErrorHandler.java:404)
>
>                 at
> org.apache.camel.impl.engine.DefaultReactiveExecutor$Worker.schedule(DefaultReactiveExecutor.java:148)
>
>                 at
> org.apache.camel.impl.engine.DefaultReactiveExecutor.scheduleMain(DefaultReactiveExecutor.java:60)
>
>                 at
> org.apache.camel.processor.Pipeline.process(Pipeline.java:147)
>
>                 at
> org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:287)
>
>                 at
> org.apache.camel.impl.engine.DefaultAsyncProcessorAwaitManager.process(DefaultAsyncProcessorAwaitManager.java:83)
>
>                 at
> org.apache.camel.support.AsyncProcessorSupport.process(AsyncProcessorSupport.java:41)
>
>                 at
> org.apache.camel.component.sjms.consumer.InOnlyMessageHandler.handleMessage(InOnlyMessageHandler.java:53)
>
>                 at
> org.apache.camel.component.sjms.consumer.AbstractMessageHandler.onMessage(AbstractMessageHandler.java:81)
>
>                 at
> org.apache.activemq.artemis.jms.client.JMSMessageListenerWrapper.onMessage(JMSMessageListenerWrapper.java:110)
>
>                 at
> org.apache.activemq.artemis.core.client.impl.ClientConsumerImpl.callOnMessage(ClientConsumerImpl.java:1030)
>
>                 at
> org.apache.activemq.artemis.core.client.impl.ClientConsumerImpl.access$400(ClientConsumerImpl.java:49)
>
>                 at
> org.apache.activemq.artemis.core.client.impl.ClientConsumerImpl$Runner.run(ClientConsumerImpl.java:1153)
>
>                 at
> org.apache.activemq.artemis.utils.actors.OrderedExecutor.doTask(OrderedExecutor.java:42)
>
>                 at
> org.apache.activemq.artemis.utils.actors.OrderedExecutor.doTask(OrderedExecutor.java:31)
>
>                 at
> org.apache.activemq.artemis.utils.actors.ProcessorBase.executePendingTasks(ProcessorBase.java:65)
>
>                 at
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
>
>                 at
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
>
>                 at
> org.apache.activemq.artemis.utils.ActiveMQThreadFactory$1.run(ActiveMQThreadFactory.java:118)
>
>
>
> And then JMS message disappears from the topic.
>
> Note when using 3.4.5  message stays unacknowledged, I will stick to 3.4.5
> for now… Please let me know if you need any more info.
>
>
>
> Cheers,
>
> Dmitry
>
>
>
>
>
> *From:* Shultz, Dmitry
> *Sent:* Wednesday, September 2, 2020 9:17 PM
> *To:* Zheng Feng <zf...@redhat.com>; users@camel.apache.org
> *Subject:* Re: CDI + SJMS + transacted
>
>
>
> You are right, I forgot to specify transacted=true on the endpoint uri...
>
> To be exact I looked at all the places (even changed the AMQ connection
> URL :) except this probably because for some stupid reason wishfully
> thought the .transacted() on the route is enough for the component to set
> it true automagically.
>
> The interesting thing is that it worked (infinite redeliveries) - message
> was not committed to the broker (not lost) without the URI change just by
> using the JTA error handler builder (comes with CDI component). Now it
> works even with no redeliveries configured at all, but they are  never
> stopping (do there is some good automation already:)
> ------------------------------
>
> *From:* Zheng Feng <zf...@redhat.com>
> *Sent:* 01 September 2020 23:09
> *To:* users@camel.apache.org <us...@camel.apache.org>
> *Subject:* Re: CDI + SJMS + transacted
>
>
>
> Yeah, TomEE could provide the "java:/TransactionManager" since it is a J2EE
> container. I wonder if you use the "transacted=true" option on the sjms
> consumer which will rollback the transaction if the router is failed.
>
>
> On Tue, Sep 1, 2020 at 4:35 AM Shultz, Dmitry <Dm...@kaltire.com>
> wrote:
>
> > Thanks for the reply Zheng.
> >
> > I'm running very similar code in the TomEE and It doesn't fail on NPE.
> See
> > similar behaviour though:
> >
> > [Thread-0 (ActiveMQ-client] WARN  o.a.c.jta.TransactionErrorHandler -
> > Transaction rollback (0x30730302) redelivered(false) for (MessageId:
> > ID:9fd77209-ebc6-11ea-955a-1ee7171b8787 on ExchangeId:
> > ID-Kal030841-1598904862181-0-2) caught: test
> >
> > And after process restart the message is gone.
> >
> > I can confirm that when I use infinite re-delivery (the error handler
> > never exhausted) the message stays in the durable topic as forever even
> > after restart. So, I'm not sure if my expectation are correct i.e. does
> it
> > supposed to stay in the topic after error handler redeliveries are
> > exhausted?
> >
> > Cheers,
> > Dmitry
> >
> >
> > -----Original Message-----
> > From: Zheng Feng [mailto:zfeng@redhat.com <zf...@redhat.com>]
> > Sent: Sunday, August 30, 2020 8:58 AM
> > To: users@camel.apache.org
> > Subject: Re: CDI + SJMS + transacted
> >
> > Hi Dmitry,
> >
> > It seems that SJMS [1]  currently only supports the use of internal JMS
> > Transactions. There is no support for the Camel Transaction Processor or
> > the Java Transaction API (JTA). Also if you want to use the JTA
> transaction
> > provided by the camel-cdi, the TransactionManager should be available via
> > JNDI "java:/TransactionManager". Then you are running the camel in the
> > standalone environment, and the transaction manager should be provided by
> > the third party implementation, such as Narayana ( you can find the jta
> > standalone example here [2]). The NPE I think should be fixed by
> > CAMEL-14918 [3], and I will try to backport it to the 3.4.x
> >
> > Regards,
> > Zheng Feng
> >
> > [1]
> >
> https://urldefense.com/v3/__https://camel.apache.org/components/latest/sjms-component.html__;!!LdWlNaMnLCM!OJ-X6YfRy0exjKJ8PNWy-d5aHbD6mgnBfTRZXXKak6kEojLVTmcKwcF4puKY9P1BTwqO$
> <https://urldefense.com/v3/__https:/camel.apache.org/components/latest/sjms-component.html__;!!LdWlNaMnLCM!OJ-X6YfRy0exjKJ8PNWy-d5aHbD6mgnBfTRZXXKak6kEojLVTmcKwcF4puKY9P1BTwqO$>
> > [2]
> >
> https://urldefense.com/v3/__https://github.com/jbosstm/quickstart/tree/master/jta-1_2-standalone__;!!LdWlNaMnLCM!OJ-X6YfRy0exjKJ8PNWy-d5aHbD6mgnBfTRZXXKak6kEojLVTmcKwcF4puKY9Py3UShj$
> <https://urldefense.com/v3/__https:/github.com/jbosstm/quickstart/tree/master/jta-1_2-standalone__;!!LdWlNaMnLCM!OJ-X6YfRy0exjKJ8PNWy-d5aHbD6mgnBfTRZXXKak6kEojLVTmcKwcF4puKY9Py3UShj$>
> > [3]
> >
> >
> https://urldefense.com/v3/__https://github.com/apache/camel/commit/4421b2bba294dd8828621684c7670f78d811ecd8*diff-773b20d331dac13fb17acfa0f58ac01f__;Iw!!LdWlNaMnLCM!OJ-X6YfRy0exjKJ8PNWy-d5aHbD6mgnBfTRZXXKak6kEojLVTmcKwcF4puKY9F_CLTBw$
> <https://urldefense.com/v3/__https:/github.com/apache/camel/commit/4421b2bba294dd8828621684c7670f78d811ecd8*diff-773b20d331dac13fb17acfa0f58ac01f__;Iw!!LdWlNaMnLCM!OJ-X6YfRy0exjKJ8PNWy-d5aHbD6mgnBfTRZXXKak6kEojLVTmcKwcF4puKY9F_CLTBw$>
> >
> > On Sat, Aug 29, 2020 at 5:50 AM Shultz, Dmitry <
> Dmitry_Shultz@kaltire.com>
> > wrote:
> >
> > > Hi All,
> > >
> > > I'm probably doing something  wrong/stupid, but I can't get the sjms
> > > (recent Camel, but same true for 2.25.2) to leave failed messages in
> > > the JMS topic (AMQ Artemis) after exception.
> > > This is what logged:
> > >
> > > [ctiveMQ-client-global-threads)] TransactionErrorHandler        WARN
> > > Transaction rollback (0x5cd1283) redelivered(false) for (MessageId:
> > > ID:bbaa590d-e975-11ea-9ad0-6c4b902fc0e1 on ExchangeId:
> > > ID-Kal030841-1598650245838-0-1) caught: null
> > > [ctiveMQ-client-global-threads)] TransactionErrorHandler        WARN
> > > Transaction rollback (0x5cd1283) redelivered(false) for (MessageId:
> > > ID:bbaa590d-e975-11ea-9ad0-6c4b902fc0e1 on ExchangeId:
> > > ID-Kal030841-1598650245838-0-1) caught: null
> > > [ctiveMQ-client-global-threads)] TransactionErrorHandler        WARN
> > > Transaction rollback (0x5cd1283) redelivered(false) for (MessageId:
> > > ID:bbaa590d-e975-11ea-9ad0-6c4b902fc0e1 on ExchangeId:
> > > ID-Kal030841-1598650245838-0-1) caught: null
> > > [ctiveMQ-client-global-threads)] TransactionErrorHandler        ERROR
> > > Failed delivery for (MessageId:
> > > ID:bbaa590d-e975-11ea-9ad0-6c4b902fc0e1 on
> > > ExchangeId: ID-Kal030841-1598650245838-0-1). Exhausted after delivery
> > > attempt: 3 caught: java.lang.NullPointerException
> > >
> > > Message History (complete message history is disabled)
> > >
> > >
> >
> ---------------------------------------------------------------------------------------------------------------------------------------
> > > RouteId              ProcessorId          Processor
> > >                                                 Elapsed (ms)
> > > [route1            ] [route1            ]
> > > [from[sjms://topic:topic:test?durableSubscriptionId=dmitr] [      1999]
> > >                 ...
> > > [route1            ] [transacted1       ] [transacted
> > >                                               ] [         0]
> > >
> > > Stacktrace
> > >
> > > ----------------------------------------------------------------------
> > > -----------------------------------------------------------------
> > >
> > > java.lang.NullPointerException: null
> > >                 at
> > > org.apache.camel.cdi.transaction.TransactionalJtaTransactionPolicy.has
> > > ActiveTransaction(TransactionalJtaTransactionPolicy.java:105)
> > > ~[camel-cdi-3.4.3.jar:3.4.3]
> > >                 at
> > > org.apache.camel.cdi.transaction.RequiredJtaTransactionPolicy.run(Requ
> > > iredJtaTransactionPolicy.java:26)
> > > ~[camel-cdi-3.4.3.jar:3.4.3]
> > >                 at
> > > org.apache.camel.jta.TransactionErrorHandler.doInTransactionTemplate(T
> > > ransactionErrorHandler.java:193)
> > > ~[camel-jta-3.4.3.jar:3.4.3]
> > >                 at
> > > org.apache.camel.jta.TransactionErrorHandler.processInTransaction(Tran
> > > sactionErrorHandler.java:144)
> > > ~[camel-jta-3.4.3.jar:3.4.3]
> > >                 at
> > > org.apache.camel.jta.TransactionErrorHandler.process(TransactionErrorH
> > > andler.java:108)
> > > ~[camel-jta-3.4.3.jar:3.4.3]
> > >                 at
> > > org.apache.camel.jta.TransactionErrorHandler.process(TransactionErrorH
> > > andler.java:117)
> > > ~[camel-jta-3.4.3.jar:3.4.3]
> > >                 at
> > > org.apache.camel.processor.errorhandler.RedeliveryErrorHandler$Redeliv
> > > eryTask.redeliver(RedeliveryErrorHandler.java:766)
> > > ~[camel-base-3.4.3.jar:3.4.3]
> > >                 at
> > > org.apache.camel.impl.engine.DefaultReactiveExecutor$Worker.schedule(D
> > > efaultReactiveExecutor.java:148)
> > > ~[camel-base-3.4.3.jar:3.4.3]
> > >                 at
> > > org.apache.camel.impl.engine.DefaultReactiveExecutor.scheduleMain(Defa
> > > ultReactiveExecutor.java:60)
> > > ~[camel-base-3.4.3.jar:3.4.3]
> > >                 at
> > > org.apache.camel.processor.Pipeline.process(Pipeline.java:147)
> > > ~[camel-base-3.4.3.jar:3.4.3]
> > >                 at
> > > org.apache.camel.processor.CamelInternalProcessor.process(CamelInterna
> > > lProcessor.java:286)
> > > ~[camel-base-3.4.3.jar:3.4.3]
> > >                 at
> > > org.apache.camel.impl.engine.DefaultAsyncProcessorAwaitManager.process
> > > (DefaultAsyncProcessorAwaitManager.java:83)
> > > ~[camel-base-3.4.3.jar:3.4.3]
> > >                 at
> > > org.apache.camel.support.AsyncProcessorSupport.process(AsyncProcessorS
> > > upport.java:40)
> > > ~[camel-support-3.4.3.jar:3.4.3]
> > >                 at
> > > org.apache.camel.component.sjms.consumer.InOnlyMessageHandler.handleMe
> > > ssage(InOnlyMessageHandler.java:52)
> > > ~[camel-sjms-3.4.3.jar:3.4.3]
> > >                 at
> > > org.apache.camel.component.sjms.consumer.AbstractMessageHandler.onMess
> > > age(AbstractMessageHandler.java:81)
> > > ~[camel-sjms-3.4.3.jar:3.4.3]
> > >                 at
> > > org.apache.activemq.artemis.jms.client.JMSMessageListenerWrapper.onMes
> > > sage(JMSMessageListenerWrapper.java:110)
> > > ~[artemis-jms-client-2.14.0.jar:2.14.0]
> > >                 at
> > > org.apache.activemq.artemis.core.client.impl.ClientConsumerImpl.callOn
> > > Message(ClientConsumerImpl.java:1030)
> > > ~[artemis-core-client-2.14.0.jar:2.14.0]
> > >
> > > So, it looks like rollback is kicked off, but when I restart the
> > > process message is gone from the JMS topic.
> > >
> > > Sample reproducer  (generated using
> > > -DarchetypeArtifactId=camel-archetype-cdi as described here
> > > https://urldefense.com/v3/__https://camel.apache.org/components/latest
> <https://urldefense.com/v3/__https:/camel.apache.org/components/latest>
> > > /others/cdi.html__;!!LdWlNaMnLCM!OJ-X6YfRy0exjKJ8PNWy-d5aHbD6mgnBfTRZX
> > > XKak6kEojLVTmcKwcF4puKY9NnrgwcA$  ) is here
> > > https://urldefense.com/v3/__https://github.com/zeppelinux/CamelCDISjms
> <https://urldefense.com/v3/__https:/github.com/zeppelinux/CamelCDISjms>
> > > Test__;!!LdWlNaMnLCM!OJ-X6YfRy0exjKJ8PNWy-d5aHbD6mgnBfTRZXXKak6kEojLVT
> > > mcKwcF4puKY9HBU5Opk$
> > > Please  have a look.
> > >
> > > Cheers,
> > > Dmitry
> > >
> >
>

RE: CDI + SJMS + transacted

Posted by "Shultz, Dmitry" <Dm...@kaltire.com>.
Zheng,

I'm still having problem and it seems to behave differently running on the same TomEE version (7.0.6) but different Camel 3+ versions.

To reproduce  I corrupted the query (handled by Deltaspike Data Module repository).

When it runs (fails) with Camel 3.4.5 it behaves as expected the first time, but when it tries to redeliver the same JMS message it complains with 'Cannot join transaction: do not override hibernate.transaction.factory_class'. Here is the full stack for redelivery:

2020-09-08 11:07:56.428 [Thread-0 (ActiveMQ-client] WARN  c.k.m.c.DeadLetterChannelBuilderProducer - redelivery attempt 1 to direct://process
2020-09-08 11:07:56.440 [Thread-0 (ActiveMQ-client] WARN  o.h.ejb.AbstractEntityManagerImpl - HHH000326: Cannot join transaction: do not override hibernate.transaction.factory_class
2020-09-08 11:07:56.442 [Thread-0 (ActiveMQ-client] ERROR c.k.m.c.DeadLetterChannelBuilderProducer - processing failed with:
javax.persistence.TransactionRequiredException: No active JTA transaction on joinTransaction call
                at org.hibernate.ejb.AbstractEntityManagerImpl.joinTransaction(AbstractEntityManagerImpl.java:1233)
                at org.hibernate.ejb.AbstractEntityManagerImpl.joinTransaction(AbstractEntityManagerImpl.java:1183)
                at org.apache.deltaspike.jpa.impl.transaction.BeanManagedUserTransactionStrategy.beforeProceed(BeanManagedUserTransactionStrategy.java:171)
                at org.apache.deltaspike.jpa.impl.transaction.EnvironmentAwareTransactionStrategy.beforeProceed(EnvironmentAwareTransactionStrategy.java:109)
                at org.apache.deltaspike.jpa.impl.transaction.ResourceLocalTransactionStrategy.execute(ResourceLocalTransactionStrategy.java:127)
                at org.apache.deltaspike.jpa.impl.transaction.TransactionalInterceptor.executeInTransaction(TransactionalInterceptor.java:57)
                at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
                at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
                at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
                at java.lang.reflect.Method.invoke(Method.java:498)
                at org.apache.webbeans.component.InterceptorBean.intercept(InterceptorBean.java:136)
                at org.apache.webbeans.intercept.InterceptorInvocationContext.proceed(InterceptorInvocationContext.java:63)
                at org.apache.webbeans.intercept.DefaultInterceptorHandler.invoke(DefaultInterceptorHandler.java:139)
                at com.kaltire.mix.tirelodge.camel.beans.EventProcessor$$OwbInterceptProxy0.process(com/kaltire/mix/tirelodge/camel/beans/EventProcessor.java)
                at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
                at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
                at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
                at java.lang.reflect.Method.invoke(Method.java:498)
                at org.apache.camel.support.ObjectHelper.invokeMethodSafe(ObjectHelper.java:209)
                at org.apache.camel.component.bean.MethodInfo.invoke(MethodInfo.java:421)
                at org.apache.camel.component.bean.MethodInfo$1.doProceed(MethodInfo.java:242)
                at org.apache.camel.component.bean.MethodInfo$1.proceed(MethodInfo.java:213)
                at org.apache.camel.component.bean.AbstractBeanProcessor.process(AbstractBeanProcessor.java:154)
                at org.apache.camel.component.bean.BeanProcessor.process(BeanProcessor.java:56)
                at org.apache.camel.management.DefaultInstrumentationProcessor.process(DefaultInstrumentationProcessor.java:91)
                at org.apache.camel.processor.errorhandler.RedeliveryErrorHandler$RedeliveryTask.redeliver(RedeliveryErrorHandler.java:766)
                at org.apache.camel.impl.engine.DefaultReactiveExecutor$Worker.schedule(DefaultReactiveExecutor.java:148)
                at org.apache.camel.impl.engine.DefaultReactiveExecutor.scheduleSync(DefaultReactiveExecutor.java:65)
                at org.apache.camel.processor.errorhandler.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:175)
                at org.apache.camel.impl.engine.DefaultAsyncProcessorAwaitManager.process(DefaultAsyncProcessorAwaitManager.java:83)
                at org.apache.camel.processor.errorhandler.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:158)
                at org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:260)
                at org.apache.camel.processor.ChoiceProcessor.process(ChoiceProcessor.java:115)
                at org.apache.camel.impl.engine.DefaultAsyncProcessorAwaitManager.process(DefaultAsyncProcessorAwaitManager.java:83)
                at org.apache.camel.support.AsyncProcessorSupport.process(AsyncProcessorSupport.java:40)
                at org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:260)
                at org.apache.camel.impl.engine.DefaultAsyncProcessorAwaitManager.process(DefaultAsyncProcessorAwaitManager.java:83)
                at org.apache.camel.support.AsyncProcessorSupport.process(AsyncProcessorSupport.java:40)
                at org.apache.camel.jta.TransactionErrorHandler.processByErrorHandler(TransactionErrorHandler.java:242)
                at org.apache.camel.jta.TransactionErrorHandler$1.run(TransactionErrorHandler.java:203)
                at org.apache.camel.cdi.transaction.TransactionalJtaTransactionPolicy.runWithTransaction(TransactionalJtaTransactionPolicy.java:51)
                at org.apache.camel.cdi.transaction.RequiredJtaTransactionPolicy.run(RequiredJtaTransactionPolicy.java:26)
                at org.apache.camel.jta.TransactionErrorHandler.doInTransactionTemplate(TransactionErrorHandler.java:193)
                at org.apache.camel.jta.TransactionErrorHandler.processInTransaction(TransactionErrorHandler.java:144)
                at org.apache.camel.jta.TransactionErrorHandler.process(TransactionErrorHandler.java:108)
                at org.apache.camel.jta.TransactionErrorHandler.process(TransactionErrorHandler.java:117)
                at org.apache.camel.processor.errorhandler.RedeliveryErrorHandler$SimpleTask.run(RedeliveryErrorHandler.java:395)
                at org.apache.camel.impl.engine.DefaultReactiveExecutor$Worker.schedule(DefaultReactiveExecutor.java:148)
                at org.apache.camel.impl.engine.DefaultReactiveExecutor.scheduleSync(DefaultReactiveExecutor.java:65)
                at org.apache.camel.processor.errorhandler.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:175)
                at org.apache.camel.impl.engine.DefaultAsyncProcessorAwaitManager.process(DefaultAsyncProcessorAwaitManager.java:83)
                at org.apache.camel.processor.errorhandler.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:158)
                at org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:260)
                at org.apache.camel.processor.Pipeline$PipelineTask.run(Pipeline.java:90)
                at org.apache.camel.impl.engine.DefaultReactiveExecutor$Worker.schedule(DefaultReactiveExecutor.java:148)
                at org.apache.camel.impl.engine.DefaultReactiveExecutor.scheduleSync(DefaultReactiveExecutor.java:65)
                at org.apache.camel.processor.Pipeline.process(Pipeline.java:145)
                at org.apache.camel.impl.engine.DefaultAsyncProcessorAwaitManager.process(DefaultAsyncProcessorAwaitManager.java:83)
                at org.apache.camel.support.AsyncProcessorSupport.process(AsyncProcessorSupport.java:40)
                at org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:260)
                at org.apache.camel.component.direct.DirectProducer.process(DirectProducer.java:66)
                at org.apache.camel.processor.SendProcessor.process(SendProcessor.java:168)
                at org.apache.camel.impl.engine.DefaultAsyncProcessorAwaitManager.process(DefaultAsyncProcessorAwaitManager.java:83)
                at org.apache.camel.support.AsyncProcessorSupport.process(AsyncProcessorSupport.java:40)
                at org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:260)
                at org.apache.camel.processor.Pipeline$PipelineTask.run(Pipeline.java:90)
                at org.apache.camel.impl.engine.DefaultReactiveExecutor$Worker.schedule(DefaultReactiveExecutor.java:148)
                at org.apache.camel.impl.engine.DefaultReactiveExecutor.scheduleSync(DefaultReactiveExecutor.java:65)
                at org.apache.camel.processor.Pipeline.process(Pipeline.java:145)
                at org.apache.camel.impl.engine.DefaultAsyncProcessorAwaitManager.process(DefaultAsyncProcessorAwaitManager.java:83)
                at org.apache.camel.support.AsyncProcessorSupport.process(AsyncProcessorSupport.java:40)
                at org.apache.camel.jta.TransactionErrorHandler.processByErrorHandler(TransactionErrorHandler.java:242)
                at org.apache.camel.jta.TransactionErrorHandler$1.run(TransactionErrorHandler.java:203)
                at org.apache.camel.cdi.transaction.TransactionalJtaTransactionPolicy.runWithTransaction(TransactionalJtaTransactionPolicy.java:51)
                at org.apache.camel.cdi.transaction.RequiredJtaTransactionPolicy.run(RequiredJtaTransactionPolicy.java:26)
                at org.apache.camel.jta.TransactionErrorHandler.doInTransactionTemplate(TransactionErrorHandler.java:193)
                at org.apache.camel.jta.TransactionErrorHandler.processInTransaction(TransactionErrorHandler.java:144)
                at org.apache.camel.jta.TransactionErrorHandler.process(TransactionErrorHandler.java:108)
                at org.apache.camel.jta.TransactionErrorHandler.process(TransactionErrorHandler.java:117)
                at org.apache.camel.processor.errorhandler.RedeliveryErrorHandler$SimpleTask.run(RedeliveryErrorHandler.java:395)
                at org.apache.camel.impl.engine.DefaultReactiveExecutor$Worker.schedule(DefaultReactiveExecutor.java:148)
                at org.apache.camel.impl.engine.DefaultReactiveExecutor.scheduleMain(DefaultReactiveExecutor.java:60)
                at org.apache.camel.processor.Pipeline.process(Pipeline.java:147)
                at org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:286)
                at org.apache.camel.impl.engine.DefaultAsyncProcessorAwaitManager.process(DefaultAsyncProcessorAwaitManager.java:83)
                at org.apache.camel.support.AsyncProcessorSupport.process(AsyncProcessorSupport.java:40)
                at org.apache.camel.component.sjms.consumer.InOnlyMessageHandler.handleMessage(InOnlyMessageHandler.java:52)
                at org.apache.camel.component.sjms.consumer.AbstractMessageHandler.onMessage(AbstractMessageHandler.java:81)
                at org.apache.activemq.artemis.jms.client.JMSMessageListenerWrapper.onMessage(JMSMessageListenerWrapper.java:110)
                at org.apache.activemq.artemis.core.client.impl.ClientConsumerImpl.callOnMessage(ClientConsumerImpl.java:1030)
                at org.apache.activemq.artemis.core.client.impl.ClientConsumerImpl.access$400(ClientConsumerImpl.java:49)
                at org.apache.activemq.artemis.core.client.impl.ClientConsumerImpl$Runner.run(ClientConsumerImpl.java:1153)
                at org.apache.activemq.artemis.utils.actors.OrderedExecutor.doTask(OrderedExecutor.java:42)
                at org.apache.activemq.artemis.utils.actors.OrderedExecutor.doTask(OrderedExecutor.java:31)
                at org.apache.activemq.artemis.utils.actors.ProcessorBase.executePendingTasks(ProcessorBase.java:65)
                at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
                at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
                at org.apache.activemq.artemis.utils.ActiveMQThreadFactory$1.run(ActiveMQThreadFactory.java:118)
                Suppressed: javax.persistence.PersistenceException: org.hibernate.exception.SQLGrammarException: could not execute statement
                                at org.hibernate.ejb.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1387)
                                at org.hibernate.ejb.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1310)
                                at org.hibernate.ejb.AbstractEntityManagerImpl.throwPersistenceException(AbstractEntityManagerImpl.java:1397)
                                at org.hibernate.ejb.AbstractQueryImpl.executeUpdate(AbstractQueryImpl.java:111)
                                at org.apache.deltaspike.data.impl.builder.result.QueryProcessorFactory$ExecuteUpdateQueryProcessor.executeQuery(QueryProcessorFactory.java:192)
                                at org.apache.deltaspike.data.impl.handler.CdiQueryInvocationContext.executeQuery(CdiQueryInvocationContext.java:253)
                                at org.apache.deltaspike.data.impl.builder.AnnotatedQueryBuilder.execute(AnnotatedQueryBuilder.java:51)
                                at org.apache.deltaspike.data.impl.builder.QueryBuilder.executeQuery(QueryBuilder.java:57)
                                at org.apache.deltaspike.data.impl.builder.AnnotatedQueryBuilder$$OwbNormalScopeProxy0.executeQuery(org/apache/deltaspike/data/impl/builder/AnnotatedQueryBuilder.java)
                                at org.apache.deltaspike.data.impl.tx.TransactionalQueryRunner$1.proceed(TransactionalQueryRunner.java:73)
                                at org.apache.deltaspike.jpa.impl.transaction.ResourceLocalTransactionStrategy.execute(ResourceLocalTransactionStrategy.java:130)
                                at org.apache.deltaspike.data.impl.tx.TransactionalQueryRunner.executeTransactional(TransactionalQueryRunner.java:68)
                                at org.apache.deltaspike.data.impl.tx.TransactionalQueryRunner.executeQuery(TransactionalQueryRunner.java:50)
                                at org.apache.deltaspike.data.impl.tx.TransactionalQueryRunner$$OwbNormalScopeProxy0.executeQuery(org/apache/deltaspike/data/impl/tx/TransactionalQueryRunner.java)
                                at org.apache.deltaspike.data.impl.handler.QueryHandler.process(QueryHandler.java:151)
                                at org.apache.deltaspike.data.impl.handler.QueryHandler$1.proceed(QueryHandler.java:119)
                                at org.apache.deltaspike.jpa.impl.transaction.ResourceLocalTransactionStrategy.execute(ResourceLocalTransactionStrategy.java:130)
                                at org.apache.deltaspike.data.impl.handler.QueryHandler.invoke(QueryHandler.java:111)
                                at org.apache.deltaspike.data.impl.handler.QueryHandler$$OwbNormalScopeProxy0.invoke(org/apache/deltaspike/data/impl/handler/QueryHandler.java)
                                at org.apache.deltaspike.proxy.spi.invocation.DeltaSpikeProxyInvocationHandler.proceed(DeltaSpikeProxyInvocationHandler.java:97)
                                at org.apache.deltaspike.proxy.spi.invocation.DeltaSpikeProxyInvocationContext.proceed(DeltaSpikeProxyInvocationContext.java:101)
                                at org.apache.deltaspike.jpa.impl.transaction.ResourceLocalTransactionStrategy.execute(ResourceLocalTransactionStrategy.java:130)
                                at org.apache.deltaspike.jpa.impl.transaction.TransactionalInterceptor.executeInTransaction(TransactionalInterceptor.java:57)
                                at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
                                at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
                                at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
                                at java.lang.reflect.Method.invoke(Method.java:498)
                                at org.apache.webbeans.component.InterceptorBean.intercept(InterceptorBean.java:136)
                                at org.apache.deltaspike.proxy.spi.invocation.DeltaSpikeProxyInvocationContext.proceed(DeltaSpikeProxyInvocationContext.java:80)
                                at org.apache.deltaspike.proxy.spi.invocation.DeltaSpikeProxyInvocationHandler.invoke(DeltaSpikeProxyInvocationHandler.java:63)
                                at org.apache.deltaspike.proxy.spi.invocation.DeltaSpikeProxyInvocationHandler$$OwbNormalScopeProxy0.invoke(org/apache/deltaspike/proxy/spi/invocation/DeltaSpikeProxyInvocationHandler.java)
                                at com.kaltire.mix.tirelodge.dao.StorageRecordRepository$$DSPartialBeanProxy.updateStorageRecord(Unknown Source)
                                at com.kaltire.mix.tirelodge.camel.beans.EventProcessor.process(EventProcessor.java:96)
                                at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
                                at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
                                at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
                                at java.lang.reflect.Method.invoke(Method.java:498)
                                at org.apache.webbeans.intercept.AbstractInvocationContext.directProceed(AbstractInvocationContext.java:113)
                                at org.apache.webbeans.intercept.AbstractInvocationContext.proceed(AbstractInvocationContext.java:106)
                                at org.apache.webbeans.intercept.InterceptorInvocationContext.proceed(InterceptorInvocationContext.java:67)
                                at org.apache.deltaspike.jpa.impl.transaction.ResourceLocalTransactionStrategy.execute(ResourceLocalTransactionStrategy.java:130)
                                at org.apache.deltaspike.jpa.impl.transaction.TransactionalInterceptor.executeInTransaction(TransactionalInterceptor.java:57)
                                at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
                                at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
                                at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
                                at java.lang.reflect.Method.invoke(Method.java:498)
                                at org.apache.webbeans.component.InterceptorBean.intercept(InterceptorBean.java:136)
                                at org.apache.webbeans.intercept.InterceptorInvocationContext.proceed(InterceptorInvocationContext.java:63)
                                at org.apache.webbeans.intercept.DefaultInterceptorHandler.invoke(DefaultInterceptorHandler.java:139)
                                at com.kaltire.mix.tirelodge.camel.beans.EventProcessor$$OwbInterceptProxy0.process(com/kaltire/mix/tirelodge/camel/beans/EventProcessor.java)
                                at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
                                at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
                                at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
                                at java.lang.reflect.Method.invoke(Method.java:498)
                                at org.apache.camel.support.ObjectHelper.invokeMethodSafe(ObjectHelper.java:209)
                                at org.apache.camel.component.bean.MethodInfo.invoke(MethodInfo.java:421)
                                at org.apache.camel.component.bean.MethodInfo$1.doProceed(MethodInfo.java:242)
                                at org.apache.camel.component.bean.MethodInfo$1.proceed(MethodInfo.java:213)
                                at org.apache.camel.component.bean.AbstractBeanProcessor.process(AbstractBeanProcessor.java:154)
                                at org.apache.camel.component.bean.BeanProcessor.process(BeanProcessor.java:56)
                                at org.apache.camel.management.DefaultInstrumentationProcessor.process(DefaultInstrumentationProcessor.java:91)
                                at org.apache.camel.processor.errorhandler.RedeliveryErrorHandler$RedeliveryTask.doRun(RedeliveryErrorHandler.java:702)
                                at org.apache.camel.processor.errorhandler.RedeliveryErrorHandler$RedeliveryTask.run(RedeliveryErrorHandler.java:616)
                                ... 72 common frames omitted
                Caused by: org.hibernate.exception.SQLGrammarException: could not execute statement
                                at org.hibernate.exception.internal.SQLExceptionTypeDelegate.convert(SQLExceptionTypeDelegate.java:82)
                                at org.hibernate.exception.internal.StandardSQLExceptionConverter.convert(StandardSQLExceptionConverter.java:49)
                                at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:124)
                                at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:109)
                                at org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.executeUpdate(ResultSetReturnImpl.java:189)
                                at org.hibernate.engine.query.spi.NativeSQLQueryPlan.performExecuteUpdate(NativeSQLQueryPlan.java:204)
                                at org.hibernate.internal.SessionImpl.executeNativeUpdate(SessionImpl.java:1238)
                                at org.hibernate.internal.SQLQueryImpl.executeUpdate(SQLQueryImpl.java:401)
                                at org.hibernate.ejb.QueryImpl.internalExecuteUpdate(QueryImpl.java:198)
                                at org.hibernate.ejb.AbstractQueryImpl.executeUpdate(AbstractQueryImpl.java:102)
                                ... 131 common frames omitted
                Caused by: java.sql.SQLSyntaxErrorException: Table 'KTDN_TM.badTable doesn't exist
                                at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:120)
                                at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:97)
                                at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:122)
                                at com.mysql.cj.jdbc.ClientPreparedStatement.executeInternal(ClientPreparedStatement.java:953)
                                at com.mysql.cj.jdbc.ClientPreparedStatement.executeUpdateInternal(ClientPreparedStatement.java:1092)
                                at com.mysql.cj.jdbc.ClientPreparedStatement.executeUpdateInternal(ClientPreparedStatement.java:1040)
                                at com.mysql.cj.jdbc.ClientPreparedStatement.executeLargeUpdate(ClientPreparedStatement.java:1347)
                                at com.mysql.cj.jdbc.ClientPreparedStatement.executeUpdate(ClientPreparedStatement.java:1025)
                                at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
                                at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
                                at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
                                at java.lang.reflect.Method.invoke(Method.java:498)
                                at org.apache.tomcat.jdbc.pool.StatementFacade$StatementProxy.invoke(StatementFacade.java:114)
                                at com.sun.proxy.$Proxy238.executeUpdate(Unknown Source)
                                at org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.executeUpdate(ResultSetReturnImpl.java:186)
                                ... 136 common frames omitted

Updating the pom.xml to use Camel 3.5.0 I see multiple entries like this during the boot (16 times to be exact):

2020-09-08 10:24:00.174 [http-nio-8081-exec-4] WARN  o.a.c.c.t.TransactionalJtaTransactionPolicy - Could not find the transaction manager through java:/TransactionManager

Then this (same stacktrace and message) 5 times:

2020-09-08 11:53:23.487 [Thread-0 (ActiveMQ-client] WARN  o.a.c.jta.TransactionErrorHandler - Transaction rollback (0x41543024) redelivered(true) for (MessageId: ID:07638789-f1fb-11ea-b2f4-564c8aece8ca on ExchangeId: ID-Kal030841-1599591203098-0-2) caught: null
2020-09-08 11:53:23.496 [Thread-0 (ActiveMQ-client] ERROR o.a.c.jta.TransactionErrorHandler - Failed delivery for (MessageId: ID:07638789-f1fb-11ea-b2f4-564c8aece8ca on ExchangeId: ID-Kal030841-1599591203098-0-2). Exhausted after delivery attempt: 1 caught: java.lang.NullPointerException

Message History (complete message history is disabled)
---------------------------------------------------------------------------------------------------------------------------------------
RouteId              ProcessorId          Processor                                                                        Elapsed (ms)
[easybook-events   ] [easybook-events   ] [from[sjms://topic:kt.mix.easybook.events?durableSubscriptionId=tire-lodge-dev&] [        31]
                ...
[easybook-events   ] [transacted1       ] [transacted                                                                    ] [         0]

Stacktrace
---------------------------------------------------------------------------------------------------------------------------------------

java.lang.NullPointerException: null
                at org.apache.camel.cdi.transaction.TransactionalJtaTransactionPolicy.hasActiveTransaction(TransactionalJtaTransactionPolicy.java:114)
                at org.apache.camel.cdi.transaction.RequiredJtaTransactionPolicy.run(RequiredJtaTransactionPolicy.java:26)
                at org.apache.camel.jta.TransactionErrorHandler.doInTransactionTemplate(TransactionErrorHandler.java:186)
                at org.apache.camel.jta.TransactionErrorHandler.processInTransaction(TransactionErrorHandler.java:137)
                at org.apache.camel.jta.TransactionErrorHandler.process(TransactionErrorHandler.java:101)
                at org.apache.camel.jta.TransactionErrorHandler.process(TransactionErrorHandler.java:110)
                at org.apache.camel.processor.errorhandler.RedeliveryErrorHandler$SimpleTask.run(RedeliveryErrorHandler.java:404)
                at org.apache.camel.impl.engine.DefaultReactiveExecutor$Worker.schedule(DefaultReactiveExecutor.java:148)
                at org.apache.camel.impl.engine.DefaultReactiveExecutor.scheduleMain(DefaultReactiveExecutor.java:60)
                at org.apache.camel.processor.Pipeline.process(Pipeline.java:147)
                at org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:287)
                at org.apache.camel.impl.engine.DefaultAsyncProcessorAwaitManager.process(DefaultAsyncProcessorAwaitManager.java:83)
                at org.apache.camel.support.AsyncProcessorSupport.process(AsyncProcessorSupport.java:41)
                at org.apache.camel.component.sjms.consumer.InOnlyMessageHandler.handleMessage(InOnlyMessageHandler.java:53)
                at org.apache.camel.component.sjms.consumer.AbstractMessageHandler.onMessage(AbstractMessageHandler.java:81)
                at org.apache.activemq.artemis.jms.client.JMSMessageListenerWrapper.onMessage(JMSMessageListenerWrapper.java:110)
                at org.apache.activemq.artemis.core.client.impl.ClientConsumerImpl.callOnMessage(ClientConsumerImpl.java:1030)
                at org.apache.activemq.artemis.core.client.impl.ClientConsumerImpl.access$400(ClientConsumerImpl.java:49)
                at org.apache.activemq.artemis.core.client.impl.ClientConsumerImpl$Runner.run(ClientConsumerImpl.java:1153)
                at org.apache.activemq.artemis.utils.actors.OrderedExecutor.doTask(OrderedExecutor.java:42)
                at org.apache.activemq.artemis.utils.actors.OrderedExecutor.doTask(OrderedExecutor.java:31)
                at org.apache.activemq.artemis.utils.actors.ProcessorBase.executePendingTasks(ProcessorBase.java:65)
                at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
                at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
                at org.apache.activemq.artemis.utils.ActiveMQThreadFactory$1.run(ActiveMQThreadFactory.java:118)

And then JMS message disappears from the topic.
Note when using 3.4.5  message stays unacknowledged, I will stick to 3.4.5 for now... Please let me know if you need any more info.

Cheers,
Dmitry


From: Shultz, Dmitry
Sent: Wednesday, September 2, 2020 9:17 PM
To: Zheng Feng <zf...@redhat.com>; users@camel.apache.org
Subject: Re: CDI + SJMS + transacted

You are right, I forgot to specify transacted=true on the endpoint uri...
To be exact I looked at all the places (even changed the AMQ connection URL :) except this probably because for some stupid reason wishfully thought the .transacted() on the route is enough for the component to set it true automagically.
The interesting thing is that it worked (infinite redeliveries) - message was not committed to the broker (not lost) without the URI change just by using the JTA error handler builder (comes with CDI component). Now it works even with no redeliveries configured at all, but they are  never stopping (do there is some good automation already:)
________________________________
From: Zheng Feng <zf...@redhat.com>>
Sent: 01 September 2020 23:09
To: users@camel.apache.org<ma...@camel.apache.org> <us...@camel.apache.org>>
Subject: Re: CDI + SJMS + transacted

Yeah, TomEE could provide the "java:/TransactionManager" since it is a J2EE
container. I wonder if you use the "transacted=true" option on the sjms
consumer which will rollback the transaction if the router is failed.


On Tue, Sep 1, 2020 at 4:35 AM Shultz, Dmitry <Dm...@kaltire.com>>
wrote:

> Thanks for the reply Zheng.
>
> I'm running very similar code in the TomEE and It doesn't fail on NPE. See
> similar behaviour though:
>
> [Thread-0 (ActiveMQ-client] WARN  o.a.c.jta.TransactionErrorHandler -
> Transaction rollback (0x30730302) redelivered(false) for (MessageId:
> ID:9fd77209-ebc6-11ea-955a-1ee7171b8787 on ExchangeId:
> ID-Kal030841-1598904862181-0-2) caught: test
>
> And after process restart the message is gone.
>
> I can confirm that when I use infinite re-delivery (the error handler
> never exhausted) the message stays in the durable topic as forever even
> after restart. So, I'm not sure if my expectation are correct i.e. does it
> supposed to stay in the topic after error handler redeliveries are
> exhausted?
>
> Cheers,
> Dmitry
>
>
> -----Original Message-----
> From: Zheng Feng [mailto:zfeng@redhat.com]
> Sent: Sunday, August 30, 2020 8:58 AM
> To: users@camel.apache.org<ma...@camel.apache.org>
> Subject: Re: CDI + SJMS + transacted
>
> Hi Dmitry,
>
> It seems that SJMS [1]  currently only supports the use of internal JMS
> Transactions. There is no support for the Camel Transaction Processor or
> the Java Transaction API (JTA). Also if you want to use the JTA transaction
> provided by the camel-cdi, the TransactionManager should be available via
> JNDI "java:/TransactionManager". Then you are running the camel in the
> standalone environment, and the transaction manager should be provided by
> the third party implementation, such as Narayana ( you can find the jta
> standalone example here [2]). The NPE I think should be fixed by
> CAMEL-14918 [3], and I will try to backport it to the 3.4.x
>
> Regards,
> Zheng Feng
>
> [1]
> https://urldefense.com/v3/__https://camel.apache.org/components/latest/sjms-component.html__;!!LdWlNaMnLCM!OJ-X6YfRy0exjKJ8PNWy-d5aHbD6mgnBfTRZXXKak6kEojLVTmcKwcF4puKY9P1BTwqO$<https://urldefense.com/v3/__https:/camel.apache.org/components/latest/sjms-component.html__;!!LdWlNaMnLCM!OJ-X6YfRy0exjKJ8PNWy-d5aHbD6mgnBfTRZXXKak6kEojLVTmcKwcF4puKY9P1BTwqO$>
> [2]
> https://urldefense.com/v3/__https://github.com/jbosstm/quickstart/tree/master/jta-1_2-standalone__;!!LdWlNaMnLCM!OJ-X6YfRy0exjKJ8PNWy-d5aHbD6mgnBfTRZXXKak6kEojLVTmcKwcF4puKY9Py3UShj$<https://urldefense.com/v3/__https:/github.com/jbosstm/quickstart/tree/master/jta-1_2-standalone__;!!LdWlNaMnLCM!OJ-X6YfRy0exjKJ8PNWy-d5aHbD6mgnBfTRZXXKak6kEojLVTmcKwcF4puKY9Py3UShj$>
> [3]
>
> https://urldefense.com/v3/__https://github.com/apache/camel/commit/4421b2bba294dd8828621684c7670f78d811ecd8*diff-773b20d331dac13fb17acfa0f58ac01f__;Iw!!LdWlNaMnLCM!OJ-X6YfRy0exjKJ8PNWy-d5aHbD6mgnBfTRZXXKak6kEojLVTmcKwcF4puKY9F_CLTBw$<https://urldefense.com/v3/__https:/github.com/apache/camel/commit/4421b2bba294dd8828621684c7670f78d811ecd8*diff-773b20d331dac13fb17acfa0f58ac01f__;Iw!!LdWlNaMnLCM!OJ-X6YfRy0exjKJ8PNWy-d5aHbD6mgnBfTRZXXKak6kEojLVTmcKwcF4puKY9F_CLTBw$>
>
> On Sat, Aug 29, 2020 at 5:50 AM Shultz, Dmitry <Dm...@kaltire.com>>
> wrote:
>
> > Hi All,
> >
> > I'm probably doing something  wrong/stupid, but I can't get the sjms
> > (recent Camel, but same true for 2.25.2) to leave failed messages in
> > the JMS topic (AMQ Artemis) after exception.
> > This is what logged:
> >
> > [ctiveMQ-client-global-threads)] TransactionErrorHandler        WARN
> > Transaction rollback (0x5cd1283) redelivered(false) for (MessageId:
> > ID:bbaa590d-e975-11ea-9ad0-6c4b902fc0e1 on ExchangeId:
> > ID-Kal030841-1598650245838-0-1) caught: null
> > [ctiveMQ-client-global-threads)] TransactionErrorHandler        WARN
> > Transaction rollback (0x5cd1283) redelivered(false) for (MessageId:
> > ID:bbaa590d-e975-11ea-9ad0-6c4b902fc0e1 on ExchangeId:
> > ID-Kal030841-1598650245838-0-1) caught: null
> > [ctiveMQ-client-global-threads)] TransactionErrorHandler        WARN
> > Transaction rollback (0x5cd1283) redelivered(false) for (MessageId:
> > ID:bbaa590d-e975-11ea-9ad0-6c4b902fc0e1 on ExchangeId:
> > ID-Kal030841-1598650245838-0-1) caught: null
> > [ctiveMQ-client-global-threads)] TransactionErrorHandler        ERROR
> > Failed delivery for (MessageId:
> > ID:bbaa590d-e975-11ea-9ad0-6c4b902fc0e1 on
> > ExchangeId: ID-Kal030841-1598650245838-0-1). Exhausted after delivery
> > attempt: 3 caught: java.lang.NullPointerException
> >
> > Message History (complete message history is disabled)
> >
> >
> ---------------------------------------------------------------------------------------------------------------------------------------
> > RouteId              ProcessorId          Processor
> >                                                 Elapsed (ms)
> > [route1            ] [route1            ]
> > [from[sjms://topic:topic:test?durableSubscriptionId=dmitr] [      1999]
> >                 ...
> > [route1            ] [transacted1       ] [transacted
> >                                               ] [         0]
> >
> > Stacktrace
> >
> > ----------------------------------------------------------------------
> > -----------------------------------------------------------------
> >
> > java.lang.NullPointerException: null
> >                 at
> > org.apache.camel.cdi.transaction.TransactionalJtaTransactionPolicy.has
> > ActiveTransaction(TransactionalJtaTransactionPolicy.java:105)
> > ~[camel-cdi-3.4.3.jar:3.4.3]
> >                 at
> > org.apache.camel.cdi.transaction.RequiredJtaTransactionPolicy.run(Requ
> > iredJtaTransactionPolicy.java:26)
> > ~[camel-cdi-3.4.3.jar:3.4.3]
> >                 at
> > org.apache.camel.jta.TransactionErrorHandler.doInTransactionTemplate(T
> > ransactionErrorHandler.java:193)
> > ~[camel-jta-3.4.3.jar:3.4.3]
> >                 at
> > org.apache.camel.jta.TransactionErrorHandler.processInTransaction(Tran
> > sactionErrorHandler.java:144)
> > ~[camel-jta-3.4.3.jar:3.4.3]
> >                 at
> > org.apache.camel.jta.TransactionErrorHandler.process(TransactionErrorH
> > andler.java:108)
> > ~[camel-jta-3.4.3.jar:3.4.3]
> >                 at
> > org.apache.camel.jta.TransactionErrorHandler.process(TransactionErrorH
> > andler.java:117)
> > ~[camel-jta-3.4.3.jar:3.4.3]
> >                 at
> > org.apache.camel.processor.errorhandler.RedeliveryErrorHandler$Redeliv
> > eryTask.redeliver(RedeliveryErrorHandler.java:766)
> > ~[camel-base-3.4.3.jar:3.4.3]
> >                 at
> > org.apache.camel.impl.engine.DefaultReactiveExecutor$Worker.schedule(D
> > efaultReactiveExecutor.java:148)
> > ~[camel-base-3.4.3.jar:3.4.3]
> >                 at
> > org.apache.camel.impl.engine.DefaultReactiveExecutor.scheduleMain(Defa
> > ultReactiveExecutor.java:60)
> > ~[camel-base-3.4.3.jar:3.4.3]
> >                 at
> > org.apache.camel.processor.Pipeline.process(Pipeline.java:147)
> > ~[camel-base-3.4.3.jar:3.4.3]
> >                 at
> > org.apache.camel.processor.CamelInternalProcessor.process(CamelInterna
> > lProcessor.java:286)
> > ~[camel-base-3.4.3.jar:3.4.3]
> >                 at
> > org.apache.camel.impl.engine.DefaultAsyncProcessorAwaitManager.process
> > (DefaultAsyncProcessorAwaitManager.java:83)
> > ~[camel-base-3.4.3.jar:3.4.3]
> >                 at
> > org.apache.camel.support.AsyncProcessorSupport.process(AsyncProcessorS
> > upport.java:40)
> > ~[camel-support-3.4.3.jar:3.4.3]
> >                 at
> > org.apache.camel.component.sjms.consumer.InOnlyMessageHandler.handleMe
> > ssage(InOnlyMessageHandler.java:52)
> > ~[camel-sjms-3.4.3.jar:3.4.3]
> >                 at
> > org.apache.camel.component.sjms.consumer.AbstractMessageHandler.onMess
> > age(AbstractMessageHandler.java:81)
> > ~[camel-sjms-3.4.3.jar:3.4.3]
> >                 at
> > org.apache.activemq.artemis.jms.client.JMSMessageListenerWrapper.onMes
> > sage(JMSMessageListenerWrapper.java:110)
> > ~[artemis-jms-client-2.14.0.jar:2.14.0]
> >                 at
> > org.apache.activemq.artemis.core.client.impl.ClientConsumerImpl.callOn
> > Message(ClientConsumerImpl.java:1030)
> > ~[artemis-core-client-2.14.0.jar:2.14.0]
> >
> > So, it looks like rollback is kicked off, but when I restart the
> > process message is gone from the JMS topic.
> >
> > Sample reproducer  (generated using
> > -DarchetypeArtifactId=camel-archetype-cdi as described here
> > https://urldefense.com/v3/__https://camel.apache.org/components/latest<https://urldefense.com/v3/__https:/camel.apache.org/components/latest>
> > /others/cdi.html__;!!LdWlNaMnLCM!OJ-X6YfRy0exjKJ8PNWy-d5aHbD6mgnBfTRZX
> > XKak6kEojLVTmcKwcF4puKY9NnrgwcA$  ) is here
> > https://urldefense.com/v3/__https://github.com/zeppelinux/CamelCDISjms<https://urldefense.com/v3/__https:/github.com/zeppelinux/CamelCDISjms>
> > Test__;!!LdWlNaMnLCM!OJ-X6YfRy0exjKJ8PNWy-d5aHbD6mgnBfTRZXXKak6kEojLVT
> > mcKwcF4puKY9HBU5Opk$
> > Please  have a look.
> >
> > Cheers,
> > Dmitry
> >
>

Re: CDI + SJMS + transacted

Posted by "Shultz, Dmitry" <Dm...@kaltire.com>.
You are right, I forgot to specify transacted=true on the endpoint uri...
To be exact I looked at all the places (even changed the AMQ connection URL :) except this probably because for some stupid reason wishfully thought the .transacted() on the route is enough for the component to set it true automagically.
The interesting thing is that it worked (infinite redeliveries) - message was not committed to the broker (not lost) without the URI change just by using the JTA error handler builder (comes with CDI component). Now it works even with no redeliveries configured at all, but they are  never stopping (do there is some good automation already:)
________________________________
From: Zheng Feng <zf...@redhat.com>
Sent: 01 September 2020 23:09
To: users@camel.apache.org <us...@camel.apache.org>
Subject: Re: CDI + SJMS + transacted

Yeah, TomEE could provide the "java:/TransactionManager" since it is a J2EE
container. I wonder if you use the "transacted=true" option on the sjms
consumer which will rollback the transaction if the router is failed.


On Tue, Sep 1, 2020 at 4:35 AM Shultz, Dmitry <Dm...@kaltire.com>
wrote:

> Thanks for the reply Zheng.
>
> I'm running very similar code in the TomEE and It doesn't fail on NPE. See
> similar behaviour though:
>
> [Thread-0 (ActiveMQ-client] WARN  o.a.c.jta.TransactionErrorHandler -
> Transaction rollback (0x30730302) redelivered(false) for (MessageId:
> ID:9fd77209-ebc6-11ea-955a-1ee7171b8787 on ExchangeId:
> ID-Kal030841-1598904862181-0-2) caught: test
>
> And after process restart the message is gone.
>
> I can confirm that when I use infinite re-delivery (the error handler
> never exhausted) the message stays in the durable topic as forever even
> after restart. So, I'm not sure if my expectation are correct i.e. does it
> supposed to stay in the topic after error handler redeliveries are
> exhausted?
>
> Cheers,
> Dmitry
>
>
> -----Original Message-----
> From: Zheng Feng [mailto:zfeng@redhat.com]
> Sent: Sunday, August 30, 2020 8:58 AM
> To: users@camel.apache.org
> Subject: Re: CDI + SJMS + transacted
>
> Hi Dmitry,
>
> It seems that SJMS [1]  currently only supports the use of internal JMS
> Transactions. There is no support for the Camel Transaction Processor or
> the Java Transaction API (JTA). Also if you want to use the JTA transaction
> provided by the camel-cdi, the TransactionManager should be available via
> JNDI "java:/TransactionManager". Then you are running the camel in the
> standalone environment, and the transaction manager should be provided by
> the third party implementation, such as Narayana ( you can find the jta
> standalone example here [2]). The NPE I think should be fixed by
> CAMEL-14918 [3], and I will try to backport it to the 3.4.x
>
> Regards,
> Zheng Feng
>
> [1]
> https://urldefense.com/v3/__https://camel.apache.org/components/latest/sjms-component.html__;!!LdWlNaMnLCM!OJ-X6YfRy0exjKJ8PNWy-d5aHbD6mgnBfTRZXXKak6kEojLVTmcKwcF4puKY9P1BTwqO$
> [2]
> https://urldefense.com/v3/__https://github.com/jbosstm/quickstart/tree/master/jta-1_2-standalone__;!!LdWlNaMnLCM!OJ-X6YfRy0exjKJ8PNWy-d5aHbD6mgnBfTRZXXKak6kEojLVTmcKwcF4puKY9Py3UShj$
> [3]
>
> https://urldefense.com/v3/__https://github.com/apache/camel/commit/4421b2bba294dd8828621684c7670f78d811ecd8*diff-773b20d331dac13fb17acfa0f58ac01f__;Iw!!LdWlNaMnLCM!OJ-X6YfRy0exjKJ8PNWy-d5aHbD6mgnBfTRZXXKak6kEojLVTmcKwcF4puKY9F_CLTBw$
>
> On Sat, Aug 29, 2020 at 5:50 AM Shultz, Dmitry <Dm...@kaltire.com>
> wrote:
>
> > Hi All,
> >
> > I'm probably doing something  wrong/stupid, but I can't get the sjms
> > (recent Camel, but same true for 2.25.2) to leave failed messages in
> > the JMS topic (AMQ Artemis) after exception.
> > This is what logged:
> >
> > [ctiveMQ-client-global-threads)] TransactionErrorHandler        WARN
> > Transaction rollback (0x5cd1283) redelivered(false) for (MessageId:
> > ID:bbaa590d-e975-11ea-9ad0-6c4b902fc0e1 on ExchangeId:
> > ID-Kal030841-1598650245838-0-1) caught: null
> > [ctiveMQ-client-global-threads)] TransactionErrorHandler        WARN
> > Transaction rollback (0x5cd1283) redelivered(false) for (MessageId:
> > ID:bbaa590d-e975-11ea-9ad0-6c4b902fc0e1 on ExchangeId:
> > ID-Kal030841-1598650245838-0-1) caught: null
> > [ctiveMQ-client-global-threads)] TransactionErrorHandler        WARN
> > Transaction rollback (0x5cd1283) redelivered(false) for (MessageId:
> > ID:bbaa590d-e975-11ea-9ad0-6c4b902fc0e1 on ExchangeId:
> > ID-Kal030841-1598650245838-0-1) caught: null
> > [ctiveMQ-client-global-threads)] TransactionErrorHandler        ERROR
> > Failed delivery for (MessageId:
> > ID:bbaa590d-e975-11ea-9ad0-6c4b902fc0e1 on
> > ExchangeId: ID-Kal030841-1598650245838-0-1). Exhausted after delivery
> > attempt: 3 caught: java.lang.NullPointerException
> >
> > Message History (complete message history is disabled)
> >
> >
> ---------------------------------------------------------------------------------------------------------------------------------------
> > RouteId              ProcessorId          Processor
> >                                                 Elapsed (ms)
> > [route1            ] [route1            ]
> > [from[sjms://topic:topic:test?durableSubscriptionId=dmitr] [      1999]
> >                 ...
> > [route1            ] [transacted1       ] [transacted
> >                                               ] [         0]
> >
> > Stacktrace
> >
> > ----------------------------------------------------------------------
> > -----------------------------------------------------------------
> >
> > java.lang.NullPointerException: null
> >                 at
> > org.apache.camel.cdi.transaction.TransactionalJtaTransactionPolicy.has
> > ActiveTransaction(TransactionalJtaTransactionPolicy.java:105)
> > ~[camel-cdi-3.4.3.jar:3.4.3]
> >                 at
> > org.apache.camel.cdi.transaction.RequiredJtaTransactionPolicy.run(Requ
> > iredJtaTransactionPolicy.java:26)
> > ~[camel-cdi-3.4.3.jar:3.4.3]
> >                 at
> > org.apache.camel.jta.TransactionErrorHandler.doInTransactionTemplate(T
> > ransactionErrorHandler.java:193)
> > ~[camel-jta-3.4.3.jar:3.4.3]
> >                 at
> > org.apache.camel.jta.TransactionErrorHandler.processInTransaction(Tran
> > sactionErrorHandler.java:144)
> > ~[camel-jta-3.4.3.jar:3.4.3]
> >                 at
> > org.apache.camel.jta.TransactionErrorHandler.process(TransactionErrorH
> > andler.java:108)
> > ~[camel-jta-3.4.3.jar:3.4.3]
> >                 at
> > org.apache.camel.jta.TransactionErrorHandler.process(TransactionErrorH
> > andler.java:117)
> > ~[camel-jta-3.4.3.jar:3.4.3]
> >                 at
> > org.apache.camel.processor.errorhandler.RedeliveryErrorHandler$Redeliv
> > eryTask.redeliver(RedeliveryErrorHandler.java:766)
> > ~[camel-base-3.4.3.jar:3.4.3]
> >                 at
> > org.apache.camel.impl.engine.DefaultReactiveExecutor$Worker.schedule(D
> > efaultReactiveExecutor.java:148)
> > ~[camel-base-3.4.3.jar:3.4.3]
> >                 at
> > org.apache.camel.impl.engine.DefaultReactiveExecutor.scheduleMain(Defa
> > ultReactiveExecutor.java:60)
> > ~[camel-base-3.4.3.jar:3.4.3]
> >                 at
> > org.apache.camel.processor.Pipeline.process(Pipeline.java:147)
> > ~[camel-base-3.4.3.jar:3.4.3]
> >                 at
> > org.apache.camel.processor.CamelInternalProcessor.process(CamelInterna
> > lProcessor.java:286)
> > ~[camel-base-3.4.3.jar:3.4.3]
> >                 at
> > org.apache.camel.impl.engine.DefaultAsyncProcessorAwaitManager.process
> > (DefaultAsyncProcessorAwaitManager.java:83)
> > ~[camel-base-3.4.3.jar:3.4.3]
> >                 at
> > org.apache.camel.support.AsyncProcessorSupport.process(AsyncProcessorS
> > upport.java:40)
> > ~[camel-support-3.4.3.jar:3.4.3]
> >                 at
> > org.apache.camel.component.sjms.consumer.InOnlyMessageHandler.handleMe
> > ssage(InOnlyMessageHandler.java:52)
> > ~[camel-sjms-3.4.3.jar:3.4.3]
> >                 at
> > org.apache.camel.component.sjms.consumer.AbstractMessageHandler.onMess
> > age(AbstractMessageHandler.java:81)
> > ~[camel-sjms-3.4.3.jar:3.4.3]
> >                 at
> > org.apache.activemq.artemis.jms.client.JMSMessageListenerWrapper.onMes
> > sage(JMSMessageListenerWrapper.java:110)
> > ~[artemis-jms-client-2.14.0.jar:2.14.0]
> >                 at
> > org.apache.activemq.artemis.core.client.impl.ClientConsumerImpl.callOn
> > Message(ClientConsumerImpl.java:1030)
> > ~[artemis-core-client-2.14.0.jar:2.14.0]
> >
> > So, it looks like rollback is kicked off, but when I restart the
> > process message is gone from the JMS topic.
> >
> > Sample reproducer  (generated using
> > -DarchetypeArtifactId=camel-archetype-cdi as described here
> > https://urldefense.com/v3/__https://camel.apache.org/components/latest
> > /others/cdi.html__;!!LdWlNaMnLCM!OJ-X6YfRy0exjKJ8PNWy-d5aHbD6mgnBfTRZX
> > XKak6kEojLVTmcKwcF4puKY9NnrgwcA$  ) is here
> > https://urldefense.com/v3/__https://github.com/zeppelinux/CamelCDISjms
> > Test__;!!LdWlNaMnLCM!OJ-X6YfRy0exjKJ8PNWy-d5aHbD6mgnBfTRZXXKak6kEojLVT
> > mcKwcF4puKY9HBU5Opk$
> > Please  have a look.
> >
> > Cheers,
> > Dmitry
> >
>

Re: CDI + SJMS + transacted

Posted by Zheng Feng <zf...@redhat.com>.
Yeah, TomEE could provide the "java:/TransactionManager" since it is a J2EE
container. I wonder if you use the "transacted=true" option on the sjms
consumer which will rollback the transaction if the router is failed.


On Tue, Sep 1, 2020 at 4:35 AM Shultz, Dmitry <Dm...@kaltire.com>
wrote:

> Thanks for the reply Zheng.
>
> I'm running very similar code in the TomEE and It doesn't fail on NPE. See
> similar behaviour though:
>
> [Thread-0 (ActiveMQ-client] WARN  o.a.c.jta.TransactionErrorHandler -
> Transaction rollback (0x30730302) redelivered(false) for (MessageId:
> ID:9fd77209-ebc6-11ea-955a-1ee7171b8787 on ExchangeId:
> ID-Kal030841-1598904862181-0-2) caught: test
>
> And after process restart the message is gone.
>
> I can confirm that when I use infinite re-delivery (the error handler
> never exhausted) the message stays in the durable topic as forever even
> after restart. So, I'm not sure if my expectation are correct i.e. does it
> supposed to stay in the topic after error handler redeliveries are
> exhausted?
>
> Cheers,
> Dmitry
>
>
> -----Original Message-----
> From: Zheng Feng [mailto:zfeng@redhat.com]
> Sent: Sunday, August 30, 2020 8:58 AM
> To: users@camel.apache.org
> Subject: Re: CDI + SJMS + transacted
>
> Hi Dmitry,
>
> It seems that SJMS [1]  currently only supports the use of internal JMS
> Transactions. There is no support for the Camel Transaction Processor or
> the Java Transaction API (JTA). Also if you want to use the JTA transaction
> provided by the camel-cdi, the TransactionManager should be available via
> JNDI "java:/TransactionManager". Then you are running the camel in the
> standalone environment, and the transaction manager should be provided by
> the third party implementation, such as Narayana ( you can find the jta
> standalone example here [2]). The NPE I think should be fixed by
> CAMEL-14918 [3], and I will try to backport it to the 3.4.x
>
> Regards,
> Zheng Feng
>
> [1]
> https://urldefense.com/v3/__https://camel.apache.org/components/latest/sjms-component.html__;!!LdWlNaMnLCM!OJ-X6YfRy0exjKJ8PNWy-d5aHbD6mgnBfTRZXXKak6kEojLVTmcKwcF4puKY9P1BTwqO$
> [2]
> https://urldefense.com/v3/__https://github.com/jbosstm/quickstart/tree/master/jta-1_2-standalone__;!!LdWlNaMnLCM!OJ-X6YfRy0exjKJ8PNWy-d5aHbD6mgnBfTRZXXKak6kEojLVTmcKwcF4puKY9Py3UShj$
> [3]
>
> https://urldefense.com/v3/__https://github.com/apache/camel/commit/4421b2bba294dd8828621684c7670f78d811ecd8*diff-773b20d331dac13fb17acfa0f58ac01f__;Iw!!LdWlNaMnLCM!OJ-X6YfRy0exjKJ8PNWy-d5aHbD6mgnBfTRZXXKak6kEojLVTmcKwcF4puKY9F_CLTBw$
>
> On Sat, Aug 29, 2020 at 5:50 AM Shultz, Dmitry <Dm...@kaltire.com>
> wrote:
>
> > Hi All,
> >
> > I'm probably doing something  wrong/stupid, but I can't get the sjms
> > (recent Camel, but same true for 2.25.2) to leave failed messages in
> > the JMS topic (AMQ Artemis) after exception.
> > This is what logged:
> >
> > [ctiveMQ-client-global-threads)] TransactionErrorHandler        WARN
> > Transaction rollback (0x5cd1283) redelivered(false) for (MessageId:
> > ID:bbaa590d-e975-11ea-9ad0-6c4b902fc0e1 on ExchangeId:
> > ID-Kal030841-1598650245838-0-1) caught: null
> > [ctiveMQ-client-global-threads)] TransactionErrorHandler        WARN
> > Transaction rollback (0x5cd1283) redelivered(false) for (MessageId:
> > ID:bbaa590d-e975-11ea-9ad0-6c4b902fc0e1 on ExchangeId:
> > ID-Kal030841-1598650245838-0-1) caught: null
> > [ctiveMQ-client-global-threads)] TransactionErrorHandler        WARN
> > Transaction rollback (0x5cd1283) redelivered(false) for (MessageId:
> > ID:bbaa590d-e975-11ea-9ad0-6c4b902fc0e1 on ExchangeId:
> > ID-Kal030841-1598650245838-0-1) caught: null
> > [ctiveMQ-client-global-threads)] TransactionErrorHandler        ERROR
> > Failed delivery for (MessageId:
> > ID:bbaa590d-e975-11ea-9ad0-6c4b902fc0e1 on
> > ExchangeId: ID-Kal030841-1598650245838-0-1). Exhausted after delivery
> > attempt: 3 caught: java.lang.NullPointerException
> >
> > Message History (complete message history is disabled)
> >
> >
> ---------------------------------------------------------------------------------------------------------------------------------------
> > RouteId              ProcessorId          Processor
> >                                                 Elapsed (ms)
> > [route1            ] [route1            ]
> > [from[sjms://topic:topic:test?durableSubscriptionId=dmitr] [      1999]
> >                 ...
> > [route1            ] [transacted1       ] [transacted
> >                                               ] [         0]
> >
> > Stacktrace
> >
> > ----------------------------------------------------------------------
> > -----------------------------------------------------------------
> >
> > java.lang.NullPointerException: null
> >                 at
> > org.apache.camel.cdi.transaction.TransactionalJtaTransactionPolicy.has
> > ActiveTransaction(TransactionalJtaTransactionPolicy.java:105)
> > ~[camel-cdi-3.4.3.jar:3.4.3]
> >                 at
> > org.apache.camel.cdi.transaction.RequiredJtaTransactionPolicy.run(Requ
> > iredJtaTransactionPolicy.java:26)
> > ~[camel-cdi-3.4.3.jar:3.4.3]
> >                 at
> > org.apache.camel.jta.TransactionErrorHandler.doInTransactionTemplate(T
> > ransactionErrorHandler.java:193)
> > ~[camel-jta-3.4.3.jar:3.4.3]
> >                 at
> > org.apache.camel.jta.TransactionErrorHandler.processInTransaction(Tran
> > sactionErrorHandler.java:144)
> > ~[camel-jta-3.4.3.jar:3.4.3]
> >                 at
> > org.apache.camel.jta.TransactionErrorHandler.process(TransactionErrorH
> > andler.java:108)
> > ~[camel-jta-3.4.3.jar:3.4.3]
> >                 at
> > org.apache.camel.jta.TransactionErrorHandler.process(TransactionErrorH
> > andler.java:117)
> > ~[camel-jta-3.4.3.jar:3.4.3]
> >                 at
> > org.apache.camel.processor.errorhandler.RedeliveryErrorHandler$Redeliv
> > eryTask.redeliver(RedeliveryErrorHandler.java:766)
> > ~[camel-base-3.4.3.jar:3.4.3]
> >                 at
> > org.apache.camel.impl.engine.DefaultReactiveExecutor$Worker.schedule(D
> > efaultReactiveExecutor.java:148)
> > ~[camel-base-3.4.3.jar:3.4.3]
> >                 at
> > org.apache.camel.impl.engine.DefaultReactiveExecutor.scheduleMain(Defa
> > ultReactiveExecutor.java:60)
> > ~[camel-base-3.4.3.jar:3.4.3]
> >                 at
> > org.apache.camel.processor.Pipeline.process(Pipeline.java:147)
> > ~[camel-base-3.4.3.jar:3.4.3]
> >                 at
> > org.apache.camel.processor.CamelInternalProcessor.process(CamelInterna
> > lProcessor.java:286)
> > ~[camel-base-3.4.3.jar:3.4.3]
> >                 at
> > org.apache.camel.impl.engine.DefaultAsyncProcessorAwaitManager.process
> > (DefaultAsyncProcessorAwaitManager.java:83)
> > ~[camel-base-3.4.3.jar:3.4.3]
> >                 at
> > org.apache.camel.support.AsyncProcessorSupport.process(AsyncProcessorS
> > upport.java:40)
> > ~[camel-support-3.4.3.jar:3.4.3]
> >                 at
> > org.apache.camel.component.sjms.consumer.InOnlyMessageHandler.handleMe
> > ssage(InOnlyMessageHandler.java:52)
> > ~[camel-sjms-3.4.3.jar:3.4.3]
> >                 at
> > org.apache.camel.component.sjms.consumer.AbstractMessageHandler.onMess
> > age(AbstractMessageHandler.java:81)
> > ~[camel-sjms-3.4.3.jar:3.4.3]
> >                 at
> > org.apache.activemq.artemis.jms.client.JMSMessageListenerWrapper.onMes
> > sage(JMSMessageListenerWrapper.java:110)
> > ~[artemis-jms-client-2.14.0.jar:2.14.0]
> >                 at
> > org.apache.activemq.artemis.core.client.impl.ClientConsumerImpl.callOn
> > Message(ClientConsumerImpl.java:1030)
> > ~[artemis-core-client-2.14.0.jar:2.14.0]
> >
> > So, it looks like rollback is kicked off, but when I restart the
> > process message is gone from the JMS topic.
> >
> > Sample reproducer  (generated using
> > -DarchetypeArtifactId=camel-archetype-cdi as described here
> > https://urldefense.com/v3/__https://camel.apache.org/components/latest
> > /others/cdi.html__;!!LdWlNaMnLCM!OJ-X6YfRy0exjKJ8PNWy-d5aHbD6mgnBfTRZX
> > XKak6kEojLVTmcKwcF4puKY9NnrgwcA$  ) is here
> > https://urldefense.com/v3/__https://github.com/zeppelinux/CamelCDISjms
> > Test__;!!LdWlNaMnLCM!OJ-X6YfRy0exjKJ8PNWy-d5aHbD6mgnBfTRZXXKak6kEojLVT
> > mcKwcF4puKY9HBU5Opk$
> > Please  have a look.
> >
> > Cheers,
> > Dmitry
> >
>

RE: CDI + SJMS + transacted

Posted by "Shultz, Dmitry" <Dm...@kaltire.com>.
Thanks for the reply Zheng.

I'm running very similar code in the TomEE and It doesn't fail on NPE. See similar behaviour though:

[Thread-0 (ActiveMQ-client] WARN  o.a.c.jta.TransactionErrorHandler - Transaction rollback (0x30730302) redelivered(false) for (MessageId: ID:9fd77209-ebc6-11ea-955a-1ee7171b8787 on ExchangeId: ID-Kal030841-1598904862181-0-2) caught: test

And after process restart the message is gone.

I can confirm that when I use infinite re-delivery (the error handler never exhausted) the message stays in the durable topic as forever even after restart. So, I'm not sure if my expectation are correct i.e. does it supposed to stay in the topic after error handler redeliveries are exhausted?

Cheers,
Dmitry


-----Original Message-----
From: Zheng Feng [mailto:zfeng@redhat.com] 
Sent: Sunday, August 30, 2020 8:58 AM
To: users@camel.apache.org
Subject: Re: CDI + SJMS + transacted

Hi Dmitry,

It seems that SJMS [1]  currently only supports the use of internal JMS Transactions. There is no support for the Camel Transaction Processor or the Java Transaction API (JTA). Also if you want to use the JTA transaction provided by the camel-cdi, the TransactionManager should be available via JNDI "java:/TransactionManager". Then you are running the camel in the standalone environment, and the transaction manager should be provided by the third party implementation, such as Narayana ( you can find the jta standalone example here [2]). The NPE I think should be fixed by
CAMEL-14918 [3], and I will try to backport it to the 3.4.x

Regards,
Zheng Feng

[1] https://urldefense.com/v3/__https://camel.apache.org/components/latest/sjms-component.html__;!!LdWlNaMnLCM!OJ-X6YfRy0exjKJ8PNWy-d5aHbD6mgnBfTRZXXKak6kEojLVTmcKwcF4puKY9P1BTwqO$
[2] https://urldefense.com/v3/__https://github.com/jbosstm/quickstart/tree/master/jta-1_2-standalone__;!!LdWlNaMnLCM!OJ-X6YfRy0exjKJ8PNWy-d5aHbD6mgnBfTRZXXKak6kEojLVTmcKwcF4puKY9Py3UShj$
[3]
https://urldefense.com/v3/__https://github.com/apache/camel/commit/4421b2bba294dd8828621684c7670f78d811ecd8*diff-773b20d331dac13fb17acfa0f58ac01f__;Iw!!LdWlNaMnLCM!OJ-X6YfRy0exjKJ8PNWy-d5aHbD6mgnBfTRZXXKak6kEojLVTmcKwcF4puKY9F_CLTBw$ 

On Sat, Aug 29, 2020 at 5:50 AM Shultz, Dmitry <Dm...@kaltire.com>
wrote:

> Hi All,
>
> I'm probably doing something  wrong/stupid, but I can't get the sjms 
> (recent Camel, but same true for 2.25.2) to leave failed messages in 
> the JMS topic (AMQ Artemis) after exception.
> This is what logged:
>
> [ctiveMQ-client-global-threads)] TransactionErrorHandler        WARN
> Transaction rollback (0x5cd1283) redelivered(false) for (MessageId:
> ID:bbaa590d-e975-11ea-9ad0-6c4b902fc0e1 on ExchangeId:
> ID-Kal030841-1598650245838-0-1) caught: null
> [ctiveMQ-client-global-threads)] TransactionErrorHandler        WARN
> Transaction rollback (0x5cd1283) redelivered(false) for (MessageId:
> ID:bbaa590d-e975-11ea-9ad0-6c4b902fc0e1 on ExchangeId:
> ID-Kal030841-1598650245838-0-1) caught: null
> [ctiveMQ-client-global-threads)] TransactionErrorHandler        WARN
> Transaction rollback (0x5cd1283) redelivered(false) for (MessageId:
> ID:bbaa590d-e975-11ea-9ad0-6c4b902fc0e1 on ExchangeId:
> ID-Kal030841-1598650245838-0-1) caught: null
> [ctiveMQ-client-global-threads)] TransactionErrorHandler        ERROR
> Failed delivery for (MessageId: 
> ID:bbaa590d-e975-11ea-9ad0-6c4b902fc0e1 on
> ExchangeId: ID-Kal030841-1598650245838-0-1). Exhausted after delivery
> attempt: 3 caught: java.lang.NullPointerException
>
> Message History (complete message history is disabled)
>
> ---------------------------------------------------------------------------------------------------------------------------------------
> RouteId              ProcessorId          Processor
>                                                 Elapsed (ms)
> [route1            ] [route1            ]
> [from[sjms://topic:topic:test?durableSubscriptionId=dmitr] [      1999]
>                 ...
> [route1            ] [transacted1       ] [transacted
>                                               ] [         0]
>
> Stacktrace
>
> ----------------------------------------------------------------------
> -----------------------------------------------------------------
>
> java.lang.NullPointerException: null
>                 at
> org.apache.camel.cdi.transaction.TransactionalJtaTransactionPolicy.has
> ActiveTransaction(TransactionalJtaTransactionPolicy.java:105)
> ~[camel-cdi-3.4.3.jar:3.4.3]
>                 at
> org.apache.camel.cdi.transaction.RequiredJtaTransactionPolicy.run(Requ
> iredJtaTransactionPolicy.java:26)
> ~[camel-cdi-3.4.3.jar:3.4.3]
>                 at
> org.apache.camel.jta.TransactionErrorHandler.doInTransactionTemplate(T
> ransactionErrorHandler.java:193)
> ~[camel-jta-3.4.3.jar:3.4.3]
>                 at
> org.apache.camel.jta.TransactionErrorHandler.processInTransaction(Tran
> sactionErrorHandler.java:144)
> ~[camel-jta-3.4.3.jar:3.4.3]
>                 at
> org.apache.camel.jta.TransactionErrorHandler.process(TransactionErrorH
> andler.java:108)
> ~[camel-jta-3.4.3.jar:3.4.3]
>                 at
> org.apache.camel.jta.TransactionErrorHandler.process(TransactionErrorH
> andler.java:117)
> ~[camel-jta-3.4.3.jar:3.4.3]
>                 at
> org.apache.camel.processor.errorhandler.RedeliveryErrorHandler$Redeliv
> eryTask.redeliver(RedeliveryErrorHandler.java:766)
> ~[camel-base-3.4.3.jar:3.4.3]
>                 at
> org.apache.camel.impl.engine.DefaultReactiveExecutor$Worker.schedule(D
> efaultReactiveExecutor.java:148)
> ~[camel-base-3.4.3.jar:3.4.3]
>                 at
> org.apache.camel.impl.engine.DefaultReactiveExecutor.scheduleMain(Defa
> ultReactiveExecutor.java:60)
> ~[camel-base-3.4.3.jar:3.4.3]
>                 at
> org.apache.camel.processor.Pipeline.process(Pipeline.java:147)
> ~[camel-base-3.4.3.jar:3.4.3]
>                 at
> org.apache.camel.processor.CamelInternalProcessor.process(CamelInterna
> lProcessor.java:286)
> ~[camel-base-3.4.3.jar:3.4.3]
>                 at
> org.apache.camel.impl.engine.DefaultAsyncProcessorAwaitManager.process
> (DefaultAsyncProcessorAwaitManager.java:83)
> ~[camel-base-3.4.3.jar:3.4.3]
>                 at
> org.apache.camel.support.AsyncProcessorSupport.process(AsyncProcessorS
> upport.java:40)
> ~[camel-support-3.4.3.jar:3.4.3]
>                 at
> org.apache.camel.component.sjms.consumer.InOnlyMessageHandler.handleMe
> ssage(InOnlyMessageHandler.java:52)
> ~[camel-sjms-3.4.3.jar:3.4.3]
>                 at
> org.apache.camel.component.sjms.consumer.AbstractMessageHandler.onMess
> age(AbstractMessageHandler.java:81)
> ~[camel-sjms-3.4.3.jar:3.4.3]
>                 at
> org.apache.activemq.artemis.jms.client.JMSMessageListenerWrapper.onMes
> sage(JMSMessageListenerWrapper.java:110)
> ~[artemis-jms-client-2.14.0.jar:2.14.0]
>                 at
> org.apache.activemq.artemis.core.client.impl.ClientConsumerImpl.callOn
> Message(ClientConsumerImpl.java:1030)
> ~[artemis-core-client-2.14.0.jar:2.14.0]
>
> So, it looks like rollback is kicked off, but when I restart the 
> process message is gone from the JMS topic.
>
> Sample reproducer  (generated using
> -DarchetypeArtifactId=camel-archetype-cdi as described here 
> https://urldefense.com/v3/__https://camel.apache.org/components/latest
> /others/cdi.html__;!!LdWlNaMnLCM!OJ-X6YfRy0exjKJ8PNWy-d5aHbD6mgnBfTRZX
> XKak6kEojLVTmcKwcF4puKY9NnrgwcA$  ) is here 
> https://urldefense.com/v3/__https://github.com/zeppelinux/CamelCDISjms
> Test__;!!LdWlNaMnLCM!OJ-X6YfRy0exjKJ8PNWy-d5aHbD6mgnBfTRZXXKak6kEojLVT
> mcKwcF4puKY9HBU5Opk$
> Please  have a look.
>
> Cheers,
> Dmitry
>