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