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.

Reply via email to