Hello. Looking at the failing code I've seen that while building the route Camel tries to resolve a policy for transactions. As it doesn't retrieve any policy, an exception is thrown, and the route is declared as failing.
I've added the following objects to my blueprint : <reference id="myTM" interface="org.springframework.transaction.PlatformTransactionManager" /> <bean class="org.apache.camel.spring.spi.SpringTransactionPolicy"> <argument ref="myTM" /> </bean> And it seems that now the route starts and runs. So, the question is : why Camel 2.x automatically gets/creates a default TransactionPolicy, and Camel 3.x doesn't ? Is it a bug ? Should we plan to add the same code in all our blueprints that need transacted routes ? Thanks for your help. Regards. Le mer. 7 déc. 2022 à 15:13, Ephemeris Lappis <ephemeris.lap...@gmail.com> a écrit : > > Hello. > > I'm testing with Camel 3.18 routes that worked before with Caml 2.x. > I've many issues... One of them is about the "transacted" that > produces an exception during the route creation. > > The routes are provided in a blueprint, itself packaged as an OSGi > bundle delivered as a Karaf feature. The blueprint is attached. > > The exception is : > org.apache.camel.FailedToCreateRouteException: Failed to create route > KT1-File at: >>> Transacted <<< in route: > Route(KT1-File)[From[master:K1-FILE:file:///SHARE/data/input... > because of policy must be specified on: > org.apache.camel.reifier.TransactedReifier@4155d8c8 > at > org.apache.camel.reifier.RouteReifier.doCreateRoute(RouteReifier.java:241) > ~[?:?] > at > org.apache.camel.reifier.RouteReifier.createRoute(RouteReifier.java:75) > ~[?:?] > at > org.apache.camel.impl.DefaultModelReifierFactory.createRoute(DefaultModelReifierFactory.java:49) > ~[?:?] > at > org.apache.camel.impl.DefaultCamelContext.startRouteDefinitions(DefaultCamelContext.java:878) > ~[?:?] > at > org.apache.camel.impl.DefaultCamelContext.startRouteDefinitions(DefaultCamelContext.java:766) > ~[?:?] > at > org.apache.camel.impl.engine.AbstractCamelContext.doInit(AbstractCamelContext.java:2947) > ~[?:?] > at > org.apache.camel.support.service.BaseService.init(BaseService.java:83) > ~[?:?] > at > org.apache.camel.impl.engine.AbstractCamelContext.init(AbstractCamelContext.java:2630) > ~[?:?] > at > org.apache.camel.support.service.BaseService.start(BaseService.java:111) > ~[?:?] > at > org.apache.camel.impl.engine.AbstractCamelContext.start(AbstractCamelContext.java:2649) > ~[?:?] > at > org.apache.camel.impl.DefaultCamelContext.start(DefaultCamelContext.java:262) > ~[?:?] > at > org.apache.camel.blueprint.BlueprintCamelContext.start(BlueprintCamelContext.java:241) > ~[?:?] > at > org.apache.camel.blueprint.BlueprintCamelContext.maybeStart(BlueprintCamelContext.java:283) > ~[?:?] > at > org.apache.camel.blueprint.BlueprintCamelContext.blueprintEvent(BlueprintCamelContext.java:188) > ~[?:?] > at > org.apache.aries.blueprint.container.BlueprintEventDispatcher$3.call(BlueprintEventDispatcher.java:197) > ~[?:?] > at > org.apache.aries.blueprint.container.BlueprintEventDispatcher$3.call(BlueprintEventDispatcher.java:195) > ~[?:?] > at java.util.concurrent.FutureTask.run(FutureTask.java:264) ~[?:?] > at > java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515) > ~[?:?] > at java.util.concurrent.FutureTask.run(FutureTask.java:264) ~[?:?] > at > java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515) > ~[?:?] > at java.util.concurrent.FutureTask.run(FutureTask.java:264) ~[?:?] > at > java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304) > ~[?:?] > at > java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) > ~[?:?] > at > java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) > ~[?:?] > at java.lang.Thread.run(Thread.java:829) ~[?:?] > Caused by: java.lang.IllegalArgumentException: policy must be > specified on: org.apache.camel.reifier.TransactedReifier@4155d8c8 > at org.apache.camel.util.ObjectHelper.notNull(ObjectHelper.java:176) > ~[?:?] > at > org.apache.camel.reifier.TransactedReifier.createProcessor(TransactedReifier.java:41) > ~[?:?] > at > org.apache.camel.reifier.ProcessorReifier.makeProcessor(ProcessorReifier.java:847) > ~[?:?] > at > org.apache.camel.reifier.ProcessorReifier.addRoutes(ProcessorReifier.java:588) > ~[?:?] > at > org.apache.camel.reifier.RouteReifier.doCreateRoute(RouteReifier.java:237) > ~[?:?] > ... 24 more > > What are the changes between Camel 2.x and 3.x about transactions ? > > Thanks for your help. > > Regards.