There is something strange. The rollbacks works but camel continues its
route (see example here)

        <!-- Core component
         Flow IN to OUT
         Process P1
        -->
        <camel:route>
            <camel:from ref="fileClientEndpoint" />

             <camel:doTry>
                <camel:setHeader headerName="origin">
                    <camel:constant>file</camel:constant>
                </camel:setHeader>

                <!-- Set Message type header with the name of the parent
folder -->
                <camel:bean ref="serviceHelper"
method="getParentFolderName"/>

                <camel:convertBodyTo type="java.lang.String"/>
                <camel:to ref="directRequestEndpoint" />

                <camel:doCatch>
                    <camel:exception>java.lang.Exception</camel:exception>
                    <camel:to
uri="log:x3slog?level=DEBUG&amp;multiline=true" />
                </camel:doCatch>
            </camel:doTry>

        </camel:route>

        <!-- Core component
         Flow IN to OUT
         Process P2
        -->
        <camel:route errorHandlerRef="txErrorHandler">
            <camel:from ref="directRequestEndpoint"/>
                <camel:transacted ref="PROPAGATION_REQUIRED"/>
                <camel:doTry>
                    <!-- Call the requestService to save the request -->
                    <camel:bean ref="serviceHelper" method="createRequest"/>
                    <!-- <camel:bean ref="serviceHelper"
method="generateError" />  -->
                    <camel:to ref="queueRequestEndpoint" />
                    <camel:doCatch>

<camel:exception>com.xpectis.x3s.exception.X3SException</camel:exception>
                        <camel:bean ref="serviceHelper"
method="processException"/>
                        <camel:to ref="queueReportingEndpoint" />
                    </camel:doCatch>
                </camel:doTry>
                <camel:doFinally>
                    <camel:bean ref="serviceHelper" method="generateError"
/>
                    <camel:rollback message="Exception occur"/>
                </camel:doFinally>
        </camel:route>

       <!-- Core component
         Flow IN to OUT
         Process P3 technical parsing
        -->
        <camel:route>
            <camel:from ref="queueRequestEndpoint" />
            <camel:doTry>

...

1) Error is created in the finally
2) Rollback occurs on the service createRequest
3) Camel continues its route from message put in the queue :
queueRequestEndpoint

Question : Do we have to create a try/catch block in the doFinally ??

Regards,

Charles Moulliard
Senior Enterprise Architect
Apache Camel Committer

*****************************
blog : http://cmoulliard.blogspot.com


On Mon, Jul 13, 2009 at 2:56 PM, Claus Ibsen <[email protected]> wrote:

> Hi
>
> doTry, doCatch, doFinally is meant to work 100% like try .. catch ..
> finally in regular Java.
>
> So doFinally is called *always* no matter what.
> And if you do a <rollback/> in doFinally then you will *always* do a
> rollback :)
>
>
> On Mon, Jul 13, 2009 at 2:49 PM, Charles Moulliard<[email protected]>
> wrote:
> > Hi,
> >
> > What will happen if an error occur in the finally block execution defined
> > here after ?
> > Is the rollback put at the right place ?
> >
> > <route>
> >    <from uri="direct:start"/>
> >    <transacted/>
> >    <doTry>
> >        <process ref="processorFail"/>
> >        <to uri="mock:result"/>
> >        <doCatch>
> >            <!-- catch multiple exceptions -->
> >            <exception>java.io.IOException</exception>
> >            <exception>java.lang.IllegalStateException</exception>
> >            <to uri="mock:catch"/>
> >        </doCatch>
> >        <doFinally>
> >            <to uri="bean:finally"/> // The call to this bean generates an
> error
> >            <rollback/> // Is it the right place of the rollback ?????????
> >        </doFinally>
> >    </doTry>
> > </route>
> >
> > Regards,
> >
> >
> > Charles Moulliard
> > Senior Enterprise Architect
> > Apache Camel Committer
> >
> > *****************************
> > blog : http://cmoulliard.blogspot.com
> >
>
>
>
> --
> Claus Ibsen
> Apache Camel Committer
>
> Open Source Integration: http://fusesource.com
> Blog: http://davsclaus.blogspot.com/
> Twitter: http://twitter.com/davsclaus
>

Reply via email to