BTW: Maybe initId was a bad method name. The idea is to split the beanRef into smaller piece of work, so when the "dangerous" part fails you have already set the id and related information you need.
Med venlig hilsen Claus Ibsen ...................................... Silverbullet Skovsgårdsvænget 21 8362 Hørning Tlf. +45 2962 7576 Web: www.silverbullet.dk -----Original Message----- From: Claus Ibsen [mailto:[EMAIL PROTECTED] Sent: 14. oktober 2008 13:14 To: [email protected] Subject: RE: Error Handler and OutHeaders Hi Yeah the sample is identical. But when the exchange fails, and onException is taking over, then it's the *original* exchange (= copy, aka snapshot) that is used, just before the node that fails. So its kinda like this from(fromRoute) TAKE SNAPSHOT (A) .beanRef("listTransformer", " fromStringToFundList initId") TAKE SNAPSHOT (B) .to("bean:fundListDao?methodName=save"); So when the beanRef fails and onException is kicked in, then the exchange that is used there is from SNAPSHOT A. It need to do a SNAPSHOT when it does retries. Med venlig hilsen Claus Ibsen ...................................... Silverbullet Skovsgårdsvænget 21 8362 Hørning Tlf. +45 2962 7576 Web: www.silverbullet.dk -----Original Message----- From: borgel [mailto:[EMAIL PROTECTED] Sent: 14. oktober 2008 13:07 To: [email protected] Subject: RE: Error Handler and OutHeaders What if I want to add other values to the header that i cannot initialize? I have looked at the example "Example using handled" here: http://activemq.apache.org/camel/exception-clause.html and I don't see the difference. In the example a customerid is added to the header without initializing it first. Claus Ibsen wrote: > > Hi > > Id is null because the exchange that is caught by onException is a > snapshot of the exchange just before your bean listTransformer is invoked. > > Any changes to the exchange that happens in listTransformer is not > effective/visible for the error handler. > > You can use 2 bean calls to let the id be visible > from(fromRoute) > .beanRef("listTransformer", "initId") > .beanRef("listTransformer", "fromStringToFundList") > .to("bean:fundListDao?methodName=save"); > > For instance a initId() method that is simple and just set the id. > > Then if there is a failure in the 2nd bean then the snapshot is from just > before the 2nd bean call. > > -- View this message in context: http://www.nabble.com/Error-Handler-and-OutHeaders-tp19970966s22882p19971372.html Sent from the Camel - Users mailing list archive at Nabble.com.
