Again use the USER forum!!! dev is for discussing development of Camel, not user related questions.
On Wed, Aug 12, 2009 at 11:22 AM, Charles Moulliard<[email protected]> wrote: > ---------- Forwarded message ---------- > From: Claus Ibsen <[email protected]> > Date: Wed, Aug 12, 2009 at 11:18 AM > Subject: Re: Error not catched in a Split > To: [email protected] > > > Hi Charles > > You post in the wrong forum! > > On Wed, Aug 12, 2009 at 11:11 AM, Charles Moulliard<[email protected]> > wrote: >> I have created a unit test in camel-core/spring to reproduce what I > observe >> in my project but I see that the following syntax is not correct : >> >> from("direct:startWithError") >> .doTry() >> .split().method("error", "dummyException") >> .to("mock:result") >> // NOT ALLOWED TO ADD A CATCH HERE >> .doCatch(Exception.class) >> .to("mock:error") >> .end(); >> >> Question : Can we use try/catch with split ? >> >> Charles Moulliard >> Senior Enterprise Architect >> Apache Camel Committer >> >> ***************************** >> blog : http://cmoulliard.blogspot.com >> >> >> On Wed, Aug 12, 2009 at 8:47 AM, Charles Moulliard <[email protected] >>wrote: >> >>> Hi, >>> >>> It seems that an error generated in a try/catch block where a split has >>> been defined in the routing is not catched. >>> >>> Here is the route example : >>> >>> <camel:route errorHandlerRef="txErrorHandlerReqNew"> >>> <camel:from ref="queueRequestEndpoint" /> >>> <camel:transacted ref="PROPAGATION_REQUIRED_NEW" /> >>> <camel:doTry> >>> >>> <camel:doTry> >>> <camel:convertBodyTo >>> type="com.xpectis.x3s.platform.model.Request" /> >>> >>> <!-- Parse the request --> >>> <camel:bean ref="serviceHelper" method="parseRequest" >>> /> >>> >>> <!-- Split the collection of messages --> >>> <camel:split strategyRef="aggregationStrat"> >>> >>> <camel:ognl>request.body</camel:ognl> >>> >>> <!-- (1) Call the service to save the request >>> message --> >>> <camel:bean ref="serviceHelper" >>> method="createRequestMessage" /> >>> >>> <!-- GENERATE A DUMMY ERROR --> >>> <camel:bean ref="serviceHelper" >>> method="generateX3SClientException" /> >>> >>> <!-- (2) Validate the business message --> >>> <camel:bean ref="serviceHelper" >>> method="validateRequestMessage" /> >>> >>> <!-- (3) Save business message --> >>> <camel:bean ref="serviceHelper" >>> method="saveValidatedRequestMessageWithAudit" /> >>> >>> </camel:split> >>> >>> <!-- Update Request status, save Audit,.. --> >>> <camel:bean ref="serviceHelper" >>> method="finishRequestMessageProcessing" /> >>> >>> <!-- If request is valid - Put result in the >>> transformation queue --> >>> <camel:to ref="queueRequestMessageEndpoint" /> >>> >>> <camel:doCatch> >>> >>> > <camel:exception>com.xpectis.x3s.exception.X3SClientException</camel:exception> >>> <camel:bean ref="serviceHelper" >>> method="updateRequestStatus"/> >>> <camel:bean ref="serviceHelper" >>> method="processException" /> >>> <camel:to ref="queueReportingEndpoint" /> >>> </camel:doCatch> >>> </camel:doTry> >>> >>> <camel:doCatch> >>> > <camel:exception>java.lang.Exception</camel:exception> >>> <camel:to >>> > uri="log:com.xpectis.x3s?level=INFO&multiline=true&showException=true&showCaughtException=true&showStackTrace=true" >>> /> >>> <camel:rollback/> >>> </camel:doCatch> >>> >>> </camel:doTry> >>> >>> </camel:route> >>> >>> >>> Error returned : >>> >>> 08:38:52,514 | INFO | enerContainer-29 | ServiceHelper >>> | ctis.x3s.core.util.ServiceHelper 924 | ###### > generateX3SClientException >>> ###### >>> 08:38:52,514 | INFO | enerContainer-29 | TraceInterceptor >>> | rg.apache.camel.processor.Logger 166 | >>> ID-dell-charles-1223-1250058871451-0-1 >>> request.body --> request.body, >>> Pattern:InOnly, Headers:{CamelFileLength=892, JMSDeliveryMode=2, >>> JMSMessageID=ID:dell-charles-1197-1250058848764-3:8:1:1:1, > JMSExpiration=0, >>> JMSTimestamp=1250059131701, >>> CamelFileAbsolutePath=d:\temp\data\oinp\OINP_Example.csv, > messageType=OINP, >>> CamelBeanMethodName=null, > CamelFilePath=d:\temp\data\oinp\OINP_Example.csv, >>> JMSRedelivered=false, JMSReplyTo=null, origin=file, > CamelFileAbsolute=true, >>> CamelFileRelativePath=d:\temp\data\oinp\OINP_Example.csv, >>> CamelFileLastModified=Mon Jul 27 16:33:12 CEST 2009, JMSPriority=4, >>> JMSXGroupID=null, CamelBeanMultiParameterArray=false, requestId=2581, >>> CamelFileParent=d:\temp\data\oinp, CamelFileNameOnly=OINP_Example.csv, >>> JMSDestination=queue://x3s:request, CamelFileName=OINP_Example.csv, >>> JMSCorrelationID=null, JMSType=null}, >>> BodyType:com.xpectis.x3s.platform.model.RequestMessage, >>> Body:com.xpectis.x3s.platform.model.requestmess...@1cebcf0, Exception: >>> com.xpectis.x3s.exception.X3SClientException: Unknown error >>> 08:38:52,514 | INFO | enerContainer-29 | x3sAggregationStrategy >>> | core.util.x3sAggregationStrategy 25 | >> oldExchange of aggregator is >>> null >>> 08:38:52,530 | INFO | enerContainer-29 | TraceInterceptor >>> | rg.apache.camel.processor.Logger 166 | >>> ID:dell-charles-1197-1250058848764-3:8:1:1:1 >>> request.body --> >>> request.body, Pattern:InOnly, Headers:{CamelRedeliveryCounter=0, >>> CamelRedelivered=false, JMSDestination=queue://x3s:request, > JMSPriority=4, >>> JMSReplyTo=null, JMSExpiration=0, JMSCorrelationID=null, >>> JMSTimestamp=1250059131701, >>> CamelFilePath=d:\temp\data\oinp\OINP_Example.csv, > CamelBeanMethodName=null, >>> requestId=2581, CamelFileLastModified=Mon Jul 27 16:33:12 CEST 2009, >>> CamelBeanMultiParameterArray=false, >>> JMSMessageID=ID:dell-charles-1197-1250058848764-3:8:1:1:1, >>> JMSDeliveryMode=2, CamelFileLength=892, > CamelFileParent=d:\temp\data\oinp, >>> CamelFileAbsolutePath=d:\temp\data\oinp\OINP_Example.csv, >>> CamelFileAbsolute=true, >>> CamelFileRelativePath=d:\temp\data\oinp\OINP_Example.csv, >>> CamelFileName=OINP_Example.csv, messageType=OINP, JMSType=null, >>> JMSRedelivered=false, origin=file, CamelFileNameOnly=OINP_Example.csv, >>> JMSXGroupID=null}, BodyType:java.util.ArrayList, >>> Body:[com.xpectis.x3s.platform.model.requestmess...@1cebcf0], >>> Exception:org.apache.camel.spring.spi.TransactedRuntimeCamelException: >>> com.xpectis.x3s.exception.X3SClientException: Unknown error, Exception: >>> org.apache.camel.spring.spi.TransactedRuntimeCamelException: >>> com.xpectis.x3s.exception.X3SClientException: Unknown error >>> 08:38:52,545 | ERROR | enerContainer-29 | EndpointMessageListener >>> | rg.apache.camel.processor.Logger 248 | >>> com.xpectis.x3s.exception.X3SClientException: Unknown error >>> org.apache.camel.spring.spi.TransactedRuntimeCamelException: >>> com.xpectis.x3s.exception.X3SClientException: Unknown error >>> at >>> > org.apache.camel.spring.spi.TransactionErrorHandler.wrapTransactedRuntimeException(TransactionErrorHandler.java:171) >>> at >>> > org.apache.camel.spring.spi.TransactionErrorHandler$1.doInTransactionWithoutResult(TransactionErrorHandler.java:121) >>> at >>> > org.springframework.transaction.support.TransactionCallbackWithoutResult.doInTransaction(TransactionCallbackWithoutResult.java:33) >>> at >>> > org.springframework.transaction.support.TransactionTemplate.execute(TransactionTemplate.java:128) >>> at >>> > org.apache.camel.spring.spi.TransactionErrorHandler.process(TransactionErrorHandler.java:86) >>> at >>> > org.apache.camel.processor.DefaultChannel.process(DefaultChannel.java:148) >>> at org.apache.camel.processor.Pipeline.process(Pipeline.java:74) >>> at >>> > org.apache.camel.processor.MulticastProcessor.doProcessSequntiel(MulticastProcessor.java:189) >>> at >>> > org.apache.camel.processor.MulticastProcessor.process(MulticastProcessor.java:126) >>> at >>> > org.apache.camel.processor.DelegateProcessor.processNext(DelegateProcessor.java:53) >>> at >>> > org.apache.camel.processor.DelegateProcessor.proceed(DelegateProcessor.java:82) >>> at >>> > org.apache.camel.processor.interceptor.TraceInterceptor.process(TraceInterceptor.java:148) >>> at >>> > org.apache.camel.processor.DefaultChannel.process(DefaultChannel.java:148) >>> at org.apache.camel.processor.Pipeline.process(Pipeline.java:74) >>> at >>> org.apache.camel.processor.TryProcessor.process(TryProcessor.java:63) >>> at >>> > org.apache.camel.processor.DelegateProcessor.processNext(DelegateProcessor.java:53) >>> at >>> > org.apache.camel.processor.DelegateProcessor.proceed(DelegateProcessor.java:82) >>> at >>> > org.apache.camel.processor.interceptor.TraceInterceptor.process(TraceInterceptor.java:148) >>> at >>> > org.apache.camel.processor.DefaultChannel.process(DefaultChannel.java:148) >>> at >>> org.apache.camel.processor.TryProcessor.process(TryProcessor.java:63) >>> at >>> > org.apache.camel.processor.DelegateProcessor.processNext(DelegateProcessor.java:53) >>> at >>> > org.apache.camel.processor.DelegateProcessor.proceed(DelegateProcessor.java:82) >>> at >>> > org.apache.camel.processor.interceptor.TraceInterceptor.process(TraceInterceptor.java:148) >>> at >>> > org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:61) >>> at >>> > org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:61) >>> at >>> > org.apache.camel.processor.RedeliveryErrorHandler.processExchange(RedeliveryErrorHandler.java:186) >>> at >>> > org.apache.camel.processor.RedeliveryErrorHandler.processErrorHandler(RedeliveryErrorHandler.java:155) >>> at >>> > org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:88) >>> at >>> > org.apache.camel.spring.spi.TransactionErrorHandler.access$101(TransactionErrorHandler.java:41) >>> at >>> > org.apache.camel.spring.spi.TransactionErrorHandler$1.doInTransactionWithoutResult(TransactionErrorHandler.java:114) >>> at >>> > org.springframework.transaction.support.TransactionCallbackWithoutResult.doInTransaction(TransactionCallbackWithoutResult.java:33) >>> at >>> > org.springframework.transaction.support.TransactionTemplate.execute(TransactionTemplate.java:128) >>> at >>> > org.apache.camel.spring.spi.TransactionErrorHandler.process(TransactionErrorHandler.java:86) >>> at >>> > org.apache.camel.processor.DefaultChannel.process(DefaultChannel.java:148) >>> at >>> > org.apache.camel.processor.RedeliveryErrorHandler.processExchange(RedeliveryErrorHandler.java:186) >>> at >>> > org.apache.camel.processor.RedeliveryErrorHandler.processErrorHandler(RedeliveryErrorHandler.java:155) >>> at >>> > org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:88) >>> at >>> > org.apache.camel.spring.spi.TransactionErrorHandler.access$101(TransactionErrorHandler.java:41) >>> at >>> > org.apache.camel.spring.spi.TransactionErrorHandler$1.doInTransactionWithoutResult(TransactionErrorHandler.java:114) >>> at >>> > org.springframework.transaction.support.TransactionCallbackWithoutResult.doInTransaction(TransactionCallbackWithoutResult.java:33) >>> at >>> > org.springframework.transaction.support.TransactionTemplate.execute(TransactionTemplate.java:128) >>> at >>> > org.apache.camel.spring.spi.TransactionErrorHandler.process(TransactionErrorHandler.java:86) >>> at >>> > org.apache.camel.processor.DelegateProcessor.processNext(DelegateProcessor.java:53) >>> at >>> > org.apache.camel.processor.DelegateProcessor.proceed(DelegateProcessor.java:82) >>> at >>> > org.apache.camel.processor.interceptor.TraceInterceptor.process(TraceInterceptor.java:148) >>> at >>> > org.apache.camel.processor.RedeliveryErrorHandler.processExchange(RedeliveryErrorHandler.java:186) >>> at >>> > org.apache.camel.processor.RedeliveryErrorHandler.processErrorHandler(RedeliveryErrorHandler.java:155) >>> at >>> > org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:88) >>> at >>> > org.apache.camel.spring.spi.TransactionErrorHandler.access$101(TransactionErrorHandler.java:41) >>> at >>> > org.apache.camel.spring.spi.TransactionErrorHandler$1.doInTransactionWithoutResult(TransactionErrorHandler.java:114) >>> at >>> > org.springframework.transaction.support.TransactionCallbackWithoutResult.doInTransaction(TransactionCallbackWithoutResult.java:33) >>> at >>> > org.springframework.transaction.support.TransactionTemplate.execute(TransactionTemplate.java:128) >>> at >>> > org.apache.camel.spring.spi.TransactionErrorHandler.process(TransactionErrorHandler.java:86) >>> at >>> > org.apache.camel.processor.DefaultChannel.process(DefaultChannel.java:148) >>> at >>> > org.apache.camel.processor.UnitOfWorkProcessor.processNext(UnitOfWorkProcessor.java:54) >>> at >>> > org.apache.camel.processor.DelegateProcessor.process(DelegateProcessor.java:48) >>> at >>> > org.apache.camel.component.jms.EndpointMessageListener.onMessage(EndpointMessageListener.java:83) >>> at >>> > org.springframework.jms.listener.AbstractMessageListenerContainer.doInvokeListener(AbstractMessageListenerContainer.java:543) >>> at >>> > org.springframework.jms.listener.AbstractMessageListenerContainer.invokeListener(AbstractMessageListenerContainer.java:482) >>> at >>> > org.springframework.jms.listener.AbstractMessageListenerContainer.doExecuteListener(AbstractMessageListenerContainer.java:451) >>> at >>> > org.springframework.jms.listener.AbstractPollingMessageListenerContainer.doReceiveAndExecute(AbstractPollingMessageListenerContainer.java:323) >>> at >>> > org.springframework.jms.listener.AbstractPollingMessageListenerContainer.receiveAndExecute(AbstractPollingMessageListenerContainer.java:261) >>> at >>> > org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.invokeListener(DefaultMessageListenerContainer.java:982) >>> at >>> > org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.run(DefaultMessageListenerContainer.java:881) >>> at java.lang.Thread.run(Thread.java:595) >>> Caused by: com.xpectis.x3s.exception.X3SClientException: Unknown error >>> at >>> > com.xpectis.x3s.core.util.ServiceHelper.generateX3SClientException(ServiceHelper.java:926) >>> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) >>> at >>> > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) >>> at >>> > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) >>> at java.lang.reflect.Method.invoke(Method.java:585) >>> at >>> org.apache.camel.component.bean.MethodInfo.invoke(MethodInfo.java:193) >>> at >>> org.apache.camel.component.bean.MethodInfo$1.proceed(MethodInfo.java:115) >>> at >>> > org.apache.camel.component.bean.BeanProcessor.process(BeanProcessor.java:122) >>> at >>> > org.apache.camel.processor.DelegateProcessor.processNext(DelegateProcessor.java:53) >>> at >>> > org.apache.camel.processor.DelegateProcessor.proceed(DelegateProcessor.java:82) >>> at >>> > org.apache.camel.processor.interceptor.TraceInterceptor.process(TraceInterceptor.java:148) >>> at >>> > org.apache.camel.processor.RedeliveryErrorHandler.processExchange(RedeliveryErrorHandler.java:186) >>> at >>> > org.apache.camel.processor.RedeliveryErrorHandler.processErrorHandler(RedeliveryErrorHandler.java:155) >>> at >>> > org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:88) >>> at >>> > org.apache.camel.spring.spi.TransactionErrorHandler.access$101(TransactionErrorHandler.java:41) >>> at >>> > org.apache.camel.spring.spi.TransactionErrorHandler$1.doInTransactionWithoutResult(TransactionErrorHandler.java:114) >>> ... 63 more >>> >>> Is the route correct ? >>> >>> 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 > -- Claus Ibsen Apache Camel Committer Open Source Integration: http://fusesource.com Blog: http://davsclaus.blogspot.com/ Twitter: http://twitter.com/davsclaus
