It looks like you have to configure the JtaTransactionManger with some
backend JTA implementaions.

On Thu, Sep 24, 2020 at 11:05 PM Reji Mathews <[email protected]> wrote:

> Hello community
>
> I am trying to write a transacted route following the block diagram in
> Camel in action book section 12.2.1
>
> Using org.springframework.transaction.jta.JtaTransactionManager. I create a
> bean of this class and add it into the application context.
>
> Following is the error I receive :
> =======================
>
> org.springframework.transaction.CannotCreateTransactionException: No
> JTA UserTransaction available - programmatic
> PlatformTransactionManager.getTransaction usage not supported
>         at
> org.springframework.transaction.jta.JtaTransactionManager.doGetTransaction(JtaTransactionManager.java:798)
>         at
> org.springframework.transaction.support.AbstractPlatformTransactionManager.getTransaction(AbstractPlatformTransactionManager.java:342)
>         at
> org.springframework.transaction.support.TransactionTemplate.execute(TransactionTemplate.java:137)
>         at
> org.apache.camel.spring.spi.TransactionErrorHandler.doInTransactionTemplate(TransactionErrorHandler.java:182)
>         at
> org.apache.camel.spring.spi.TransactionErrorHandler.processInTransaction(TransactionErrorHandler.java:140)
>         at
> org.apache.camel.spring.spi.TransactionErrorHandler.process(TransactionErrorHandler.java:107)
>         at
> org.apache.camel.spring.spi.TransactionErrorHandler.process(TransactionErrorHandler.java:116)
>         at
> org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:201)
>         at
> org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:201)
>         at
> org.apache.camel.component.jetty.CamelContinuationServlet.doService(CamelContinuationServlet.java:220)
>         at
> org.apache.camel.http.common.CamelServlet.service(CamelServlet.java:79)
>         at javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
>         at
> org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:876)
>         at
> org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1623)
>         at
> org.eclipse.jetty.servlets.MultiPartFilter.doFilter(MultiPartFilter.java:150)
>         at
> org.apache.camel.component.jetty.CamelFilterWrapper.doFilter(CamelFilterWrapper.java:43)
>         at
> org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1610)
>         at
> org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:540)
>         at
> org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:255)
>         at
> org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1347)
>         at
> org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:203)
>         at
> org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:480)
>         at
> org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:201)
>         at
> org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1249)
>         at
> org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:144)
>         at
> org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132)
>         at org.eclipse.jetty.server.Server.handle(Server.java:505)
>         at
> org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:370)
>         at
> org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:267)
>         at org.eclipse.jetty.io
> .AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:305)
>         at org.eclipse.jetty.io
> .FillInterest.fillable(FillInterest.java:103)
>         at org.eclipse.jetty.io
> .ChannelEndPoint$2.run(ChannelEndPoint.java:117)
>         at
> org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:781)
>         at
> org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:917)
>         at java.lang.Thread.run(Thread.java:748)
>
>
> My route looks as follows
> =======================
>     <route customId="false" id="route2">
>         <from uri="jetty:http://0.0.0.0:8081/txn?httpMethodRestrict=GET"/>
>         <transacted id="transacted1">
>             <log id="log6" message="Received http payload : ${body}"/>
>              <setBody id="setBody1">
>             <simple>insert into mydb.transaction_test (name) values ( '${
> property.name}' )</simple>
>         </setBody>
>         <log id="log2" loggingLevel="INFO" message="Executing Sql Statement
> : ${body}"/>
>         <to id="to3"
> uri="jdbc:fc9af189-1fe3-4d3b-8ac6-06a5a65dbe6a?resetAutoCommit=false"/>
>         <process id="process4"/>
>
>         <setBody id="setBody2">
>             <simple>update mydb.transaction_test set age =
> '${property.age}' where name1 = '${property.name}'</simple>
>         </setBody>
>         <log id="log3" loggingLevel="INFO" message="Executing Sql Statement
> : ${body}"/>
>         <to id="to4"
> uri="jdbc:fc9af189-1fe3-4d3b-8ac6-06a5a65dbe6a?resetAutoCommit=false"/>
>         <setBody id="setBody3">
>             <expressionDefinition>language[simple:{ "status" : "ok"
>  }]</expressionDefinition>
>         </setBody>
>         <log id="log4" loggingLevel="INFO" message="${body}"/>
>         </transacted>
>     </route>
>

Reply via email to