I have had a context happily set up using XA transactions for several days.
As long as I am triggering it from a "direct:start" producer, then everything is fine - my XA transactions work. As soon as I change it to trigger from the jetty http endpoint producer, I get an error when I do my first queue write: Session's XAResource has not been enlisted in a distributed transaction. If I switch it back to "direct:start", then no problem. I have tried playing about with this every which way to no avail. Can anyone help? <camelContext id="cargo-publish-new-polices-context" xmlns="http://camel.apache.org/schema/spring"> <errorHandler id="deadLetterChannel" type="DeadLetterChannel" deadLetterUri="vm:frameError" useOriginalMessage="true"> <redeliveryPolicy maximumRedeliveries="5" retryAttemptedLogLevel="WARN" redeliveryDelay="500" /> </errorHandler> <dataFormats> <jaxb id="jaxb" contextPath="com.catlincargo.cargopolicy._1" /> </dataFormats> <route id="getNewPolicies"> <!-- <from uri="direct:start" /> --> <from uri="jetty:http://localhost:11000/cargoFrameIntegration"/> <to uri="vm:cargoNewPoliciesIn" /> </route> <route id="publishNewPolicies"> <from uri="vm:cargoNewPoliciesIn" /> <transacted /> <bean ref="policyProducer" /> <split> <simple>${body}</simple> <process ref="preMarshalingProcessor" /> <marshal ref="jaxb" /> <to uri="activemq:queue:cargoNewPolicies" /> </split> <process ref="processedModVersionUpdateProcessor" /> </route> <route id="invokeFrame" errorHandlerRef="deadLetterChannel"> <from uri="activemq:queue:cargoNewPolicies" /> <transacted /> <unmarshal ref="jaxb" /> <process ref="frameInvocationProcessor" /> </route> <route id="handleFrameError"> <from uri="vm:frameError" /> <transacted /> <unmarshal ref="jaxb" /> <process ref="errorLogProcessor" /> <process ref="preMarshalingProcessor" /> <marshal ref="jaxb" /> <to uri="activemq:queue:cargoNewPoliciesError" /> </route> </camelContext> -- Simon Godden