Hi,
The exception handler (MyErrorHandler) only comes into play once the file is
read and routed to the to(destinationURI). The exception handler cannot come
into play if there is a problem setting up a Consumer connection in the
from(sourceURI).
This is natural since if there is a problem with setting up the ftp
connection the sourceURI, the route will not be started by the camelcontext.
Hope this helps.
Cheers,
Ashwin...
/U wrote:
>
> thnaks for the help - it works. Only problem:
> if connection to toUri fails, MyErrorhandler is
> invoked; but if connection to fromUri fails,
> MyErrorHandler not invoked!
>
> for example,
>
> from("file://a.log").onException(Exception.class).process(MyErrHandler).end().
> to("ftp://u...@server?....").end()
> is working if I cant connect to ftp server; but
>
>
> from("ftp://u...@server?....").onException(Exception.class).process(MyErrHandler).end().
> to("file://a.log").end()
> not invoking MyErrHandler if server not online.
>
> why this difference in behavior?
>
>
> Claus Ibsen-2 wrote:
>>
>> Hi
>>
>> onException should be set right after from. So you route should be
>>
>> from(fromUri)
>> .onException(Exception.class).process(new
>> MyErrorHandler(fromUri)).end();
>> .to(toUri);
>>
>> And you can use .toF to pass arguments (like String.format). Or its
>> simply just Java so you can do .to("xxx" + "?yyy=zzz");
>>
>>
>> On Tue, Mar 23, 2010 at 11:43 PM, /U <[email protected]> wrote:
>>>
>>> Camel: 2.2.0:
>>>
>>> i have route builder which adds a route as follows with a
>>> deadLetterChannel
>>> as a fallback error handler and an onException fork:
>>>
>>>
>>>
>>> errorHandler(deadLetterChannel("bean:myBean?method=processError"));
>>> //
>>> from(fromUri).to(toUri).end().
>>> onException(Exception.class).process(new
>>> MyErrorHandler(fromUri)).stop();
>>>
>>>
>>> Problem is: when the message cannot be routed to the destination
>>> endpoint
>>> (say, because the endpoint URI is not reachable)
>>> the onException nominated ErrorHandler is never invoked; instead the
>>> deadLetterChannel()
>>> is invoked. This would be fine except for the fact that I need an
>>> application context
>>> in the error handler for cleanup: while I am able to pass the required
>>> context to my
>>> onException error handler (as shown above), I am not sure how to do that
>>> with the
>>> deadLetterChannel.
>>>
>>> Questions:
>>> - why isn't onException() method invoked?
>>> - is there a way to pass an arbitrary data to a bean which is used as
>>> an
>>> endpoint. Eg:
>>> to("bean:myBean?method=processError&arg="+fromUri)
>>>
>>> regardds,
>>>
>>> /U
>>>
>>> --
>>> View this message in context:
>>> http://old.nabble.com/onException%28%29-tp28008233p28008233.html
>>> Sent from the Camel - Users mailing list archive at Nabble.com.
>>>
>>>
>>
>>
>>
>> --
>> 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
>>
>>
>
>
-----
---
Ashwin Karpe, Principal Consultant, PS - Opensource Center of Competence
Progress Software Corporation
14 Oak Park Drive
Bedford, MA 01730
---
+1-972-304-9084 (Office)
+1-972-971-1700 (Mobile)
----
Blog: http://opensourceknowledge.blogspot.com/
--
View this message in context:
http://old.nabble.com/onException%28%29-tp28008233p28023140.html
Sent from the Camel - Users mailing list archive at Nabble.com.