Thanks Claus Ibsen: If we just consider this example, move policy before doTry could resolve it; but If we consider another situation: <doTry> ..some other operation .. <policy ref="...> transaction operations </policy> <docatch> </docatch> </dotry>
At this time, I cannot move policy to <doTry/> easily; and also, if transaction operations raise exception, the doCatch cannot catch it; Claus Ibsen wrote: >Move the <policy> before the <doTry> >On Thu, Apr 22, 2010 at 9:08 AM, ext2 <x...@tongtech.com> wrote: > > Hi: > > The camel's transaction required the transacted-error-handler, but try-catch > required no-error-handler. They will conflict; following is a sample that > the try-catch cannot works while using transaction. but I am not sure if > this is bug or just a camel's limit? > > For example, the following route : > > <doTry> > <policy ref="PROPAGATION_REQUIRED"> > <pipeline> > <to uri="ibatis:table.add?statementType=Insert"/> > <bean ref="errorbean" method="raiseError"/> > </pipeline> > </policy> > <doCatch> > <exception>java.lang.Exception</exception> > <bean ref="mybean" method="foo"/> > </doCatch> > > As for normal understanding: the errorbean(just after ibatis) raise error, > so the pipeline will marked as rollback status, but the exception is still > exist, and the catch clause will be execute.And in camel, doCatch cannot be > execute; > > > -- Claus Ibsen Apache Camel Committer Author of Camel in Action: http://www.manning.com/ibsen/ Open Source Integration: http://fusesource.com Blog: http://davsclaus.blogspot.com/ Twitter: http://twitter.com/davsclaus