I am using camel 2.2 running in servicemix 4.2

willem.jiang wrote:
> 
> Which version of Camel are you using?
> Are you running the Camel application in an OSGi platform ?
> 
>  From the stack trace, I can't tell why adding http compnent in the 
> camelContext.xml can resolve the problem.
> 
> Willem
> 
> gnanda wrote:
>> The issue is resolved after I added the below line in camelconetxt.xml
>> file
>> <bean id="http" class="org.apache.camel.component.http.HttpComponent">
>> 
>> cheers
>> gnanda
>> 
>> 
>> gnanda wrote:
>>> I have attached my routercode. as an attachment
>>> For convenience few lines are here
>>>  
>>> onException(org.apache.camel.component.http.HttpOperationFailedException.class).handled(true).to("jms:queue:MM.HTTP-ERRORQ");
>>>     onException(Exception.class).onWhen(new Predicate() {
>>>
>>>                     public boolean matches(Exchange exchange) {
>>>                             log.info(exchange);
>>>
>>>                             Exception ex = 
>>> exchange.getProperty(Exchange.EXCEPTION_CAUGHT,
>>>                                             Exception.class);
>>>                             
>>> org.apache.camel.component.http.HttpOperationFailedException ex1 =
>>> exchange.getProperty(Exchange.EXCEPTION_CAUGHT,
>>>                                     
>>> org.apache.camel.component.http.HttpOperationFailedException.class);
>>>                             log.info("HttpOperatioFailedException is:"+ex1);
>>>                             
>>>                             if(ex instanceof
>>> org.apache.camel.component.http.HttpOperationFailedException){
>>>                                     log.info("exception is instanceof
>>> http.HttpOperationFailedException");
>>>                                     
>>> org.apache.camel.component.http.HttpOperationFailedException ex2
>>> =(org.apache.camel.component.http.HttpOperationFailedException)ex;
>>>                                     log.info("response body is:"+ 
>>> ex2.getResponseBody());
>>>                             }
>>>                             else{
>>>                                     log.info("exception is NOT instanceof
>>> http.HttpOperationFailedException");
>>>                             }
>>>                             if(ex instanceof 
>>> org.apache.camel.RuntimeCamelException){
>>>                                     log.info("exception is instanceof
>>> org.apache.camel.RuntimeCamelException");
>>>                                     
>>>                             }
>>>                             else{
>>>                                     log.info("exception is NOT instanceof
>>> org.apache.camel.RuntimeCamelException");
>>>                             }
>>>                             log.info("EXCEPTION CLASS IS:"+ex.getClass());
>>>                             log.info("EXCEPTION CAUSE IS:"+ex.getCause());
>>>
>>>                             log.error(ex);
>>>                             log.error("error:",ex);
>>>                             ex.printStackTrace();
>>>                             String exMessage = exchange.getProperty(
>>>                                             Exchange.EXCEPTION_CAUGHT, 
>>> String.class);
>>>                             log.info("exmessage is:" + exMessage);
>>>                             if (exMessage.endsWith("404")) {
>>>                                     log.info("error code is 404");
>>>                                     return true;
>>>                             } else
>>>                                     return false;
>>>                     }
>>>             
>>> }).useExponentialBackOff().handled(true).to(this.errorQ).process(
>>>                             new DefaultErrorHandler());
>>>
>>>     
>>> onException(Exception.class).useExponentialBackOff().handled(true).to(this.errorQ)
>>>             .process(new DefaultErrorHandler());
>>>             //
>>> onException(SoapFault.class).maximumRedeliveries(1).useExponentialBackOff().handled(true)
>>>             // .process(new DefaultErrorHandler()).to(this.errorQ);
>>>
>>>             
>>> onException(java.net.ConnectException.class).maximumRedeliveries(1)
>>>                             .handled(true).to(this.retryQ).process(new 
>>> DefaultErrorHandler());
>>>
>>>             // this is just the generic error handler where we set the 
>>> destination
>>>             // and the number of redeliveries we want to try
>>>             //
>>> errorHandler(deadLetterChannel("jmstx:queue:DLQ.cex.spq2").maximumRedeliveries(1));
>>>
>>>             // IMP:If I add policy here then onException clause does not 
>>> work with
>>>             // 4.0. With
>>>             // exception block it does local retry with deadletter channel
>>>             // it works in4.2
>>>             from(this.inputQ).transacted("PROPAGATION_REQUIRED").bean(
>>>                             processorBean, "setLocationUrI")//
>>> .bean(myBean,"setSoap12Header").bean(myBean,"printExchangeHeaders")
>>>             
>>>                             .process(new Processor() {
>>>                                     public void process(Exchange exchange) 
>>> throws Exception {
>>>                                             // MyProcessorBean myBean = new 
>>> MyProcessorBean();
>>>                                             Message message = 
>>> exchange.getIn();
>>>
>>>                                             Message in = exchange.getIn();
>>>                                             log.info("isTransacted:" + 
>>> exchange.isTransacted());
>>>                                             log
>>>                                                             .info("Messaged 
>>> read from the queue by camelRouter:= "
>>>                                                                             
>>> + in.getBody(String.class));
>>>                                             log.info("printing properties");
>>>                                             Map<String, Object> properties 
>>> = exchange
>>>                                                             
>>> .getProperties();
>>>                                             Set<String> sin = 
>>> properties.keySet();
>>>                                             for (String key : sin) {
>>>                                                     log.info(key + ":" + 
>>> properties.get(key));
>>>                                             }
>>>
>>>                                             // 
>>> exchange.setPattern(ExchangePattern.InOut);
>>>
>>>                                     }
>>>                             })
>>>                             
>>>                             /**
>>>                              * call external web service using 
>>> recipientlist patterns
>>>                              */
>>>                             
>>> .recipientList(header(Constants.DYNAMIC_HTTP_URI)).bean(
>>>                                             resProcessorBean, 
>>> "handleResponse");
>>>                     
>>>
>>>
>>>
>>> Here are few lines from the log file that i am printing from the router
>>> code
>>>
>>> 2010-06-12 06:33:24,739 |06:33:24,739 | INFO  | tenerContainer-4 |
>>> SCRouterBuilder                  | er.camelrouter.SCRouterBuilder$1  149
>>> |
>>> HttpOperatioFailedException is:null
>>> 2010-06-12 06:33:24,739 |06:33:24,739 | INFO  | tenerContainer-4 |
>>> SCRouterBuilder                  | er.camelrouter.SCRouterBuilder$1  157
>>> |
>>> exception is NOT instanceof http.HttpOperationFailedException
>>> 2010-06-12 06:33:24,739 |06:33:24,739 | INFO  | tenerContainer-4 |
>>> SCRouterBuilder                  | er.camelrouter.SCRouterBuilder$1  164
>>> |
>>> exception is NOT instanceof org.apache.camel.RuntimeCamelException
>>> 2010-06-12 06:33:24,739 |06:33:24,739 | INFO  | tenerContainer-4 |
>>> SCRouterBuilder                  | er.camelrouter.SCRouterBuilder$1  166
>>> |
>>> EXCEPTION CLASS IS:class
>>> org.apache.camel.component.http.HttpOperationFailedException
>>> 2010-06-12 06:33:24,739 |06:33:24,739 | INFO  | tenerContainer-4 |
>>> SCRouterBuilder                  | er.camelrouter.SCRouterBuilder$1  167
>>> |
>>> EXCEPTION CAUSE IS:null
>>> 2010-06-12 06:33:24,739 |06:33:24,739 | ERROR | tenerContainer-4 |
>>> SCRouterBuilder                  | er.camelrouter.SCRouterBuilder$1  169
>>> |
>>> org.apache.camel.component.http.HttpOperationFailedException: HTTP
>>> operation failed invoking http://lpf004689/orderapp1/OrderProcess with
>>> statusCode: 404
>>>
>>> And here is the exception getting printed
>>>
>>>
>>> 2010-06-12 06:33:24,833 |06:33:24,833 | ERROR | tenerContainer-4 |
>>> TransactionErrorHandler          | rg.apache.camel.processor.Logger  248
>>> |
>>> Failed delivery for exchangeId: a9119c36-5bee-4395-9eda-0e62199b54c5.
>>> Exhausted after delivery attempt: 1 caught:
>>> org.apache.camel.component.http.HttpOperationFailedException: HTTP
>>> operation failed invoking http://lpf004689/orderapp1/OrderProcess with
>>> statusCode: 404. Processed by failure processor:
>>> Pipeline[Channel[sendTo(Endpoint[jms://queue:MM.error])],
>>> channel[com.pf.simpleconsumer.camelrouter.defaulterrorhand...@b39fbc]]
>>> org.apache.camel.component.http.HttpOperationFailedException: HTTP
>>> operation failed invoking http://lpf004689/orderapp1/OrderProcess with
>>> statusCode: 404
>>>     at
>>> org.apache.camel.component.http.HttpProducer.populateHttpOperationFailedException(HttpProducer.java:150)
>>>     at
>>> org.apache.camel.component.http.HttpProducer.process(HttpProducer.java:92)
>>>     at
>>> org.apache.camel.processor.RedeliveryErrorHandler.processExchange(RedeliveryErrorHandler.java:177)
>>>     at
>>> org.apache.camel.processor.RedeliveryErrorHandler.processErrorHandler(RedeliveryErrorHandler.java:143)
>>>     at
>>> org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:88)
>>>     at
>>> org.apache.camel.spring.spi.TransactionErrorHandler.processByRegularErrorHandler(TransactionErrorHandler.java:90)
>>>     at
>>> org.apache.camel.spring.spi.TransactionErrorHandler.process(TransactionErrorHandler.java:81)
>>>     at
>>> org.apache.camel.processor.MulticastProcessor.doProcess(MulticastProcessor.java:266)
>>>     at
>>> org.apache.camel.processor.MulticastProcessor.doProcessSequential(MulticastProcessor.java:218)
>>>     at
>>> org.apache.camel.processor.MulticastProcessor.process(MulticastProcessor.java:137)
>>>     at
>>> org.apache.camel.processor.RecipientList.sendToRecipientList(RecipientList.java:102)
>>>     at
>>> org.apache.camel.processor.RecipientList.process(RecipientList.java:81)
>>>     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:161)
>>>     at
>>> org.apache.camel.processor.RedeliveryErrorHandler.processExchange(RedeliveryErrorHandler.java:177)
>>>     at
>>> org.apache.camel.processor.RedeliveryErrorHandler.processErrorHandler(RedeliveryErrorHandler.java:143)
>>>     at
>>> org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:88)
>>>     at
>>> org.apache.camel.processor.DefaultErrorHandler.process(DefaultErrorHandler.java:49)
>>>     at
>>> org.apache.camel.processor.DefaultChannel.process(DefaultChannel.java:228)
>>>     at org.apache.camel.processor.Pipeline.process(Pipeline.java:74)
>>>     at
>>> org.apache.camel.processor.RedeliveryErrorHandler.processExchange(RedeliveryErrorHandler.java:177)
>>>     at
>>> org.apache.camel.processor.RedeliveryErrorHandler.processErrorHandler(RedeliveryErrorHandler.java:143)
>>>     at
>>> org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:88)
>>>     at
>>> org.apache.camel.spring.spi.TransactionErrorHandler.access$001(TransactionErrorHandler.java:39)
>>>     at
>>> org.apache.camel.spring.spi.TransactionErrorHandler$1.doInTransactionWithoutResult(TransactionErrorHandler.java:140)
>>>     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.doInTransactionTemplate(TransactionErrorHandler.java:130)
>>>     at
>>> org.apache.camel.spring.spi.TransactionErrorHandler.processInTransaction(TransactionErrorHandler.java:106)
>>>     at
>>> org.apache.camel.spring.spi.TransactionErrorHandler.process(TransactionErrorHandler.java:84)
>>>     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:161)
>>>     at
>>> org.apache.camel.processor.RedeliveryErrorHandler.processExchange(RedeliveryErrorHandler.java:177)
>>>     at
>>> org.apache.camel.processor.RedeliveryErrorHandler.processErrorHandler(RedeliveryErrorHandler.java:143)
>>>     at
>>> org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:88)
>>>     at
>>> org.apache.camel.processor.DefaultErrorHandler.process(DefaultErrorHandler.java:49)
>>>     at
>>> org.apache.camel.processor.DefaultChannel.process(DefaultChannel.java:228)
>>>     at
>>> org.apache.camel.processor.UnitOfWorkProcessor.processNext(UnitOfWorkProcessor.java:66)
>>>     at
>>> org.apache.camel.processor.DelegateProcessor.process(DelegateProcessor.java:48)
>>>     at
>>> org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:67)
>>>     at
>>> org.apache.camel.component.jms.EndpointMessageListener.onMessage(EndpointMessageListener.java:84)
>>>     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:241)
>>>     at
>>> org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.invokeListener(DefaultMessageListenerContainer.java:982)
>>>     at
>>> org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.executeOngoingLoop(DefaultMessageListenerContainer.java:974)
>>>     at
>>> org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.run(DefaultMessageListenerContainer.java:876)
>>>     at java.lang.Thread.run(Thread.java:619)
>>>
>>>
>>> willem.jiang wrote:
>>>> What's the exception that you got?
>>>> I didn't see the detail info log level message.
>>>>
>>>> Can I have a look at your whole Camel route?
>>>>
>>>> Willem
>>>>
>>>> gnanda wrote:
>>>>> Thanks a lot willem for the reply.
>>>>> I am still stuck with the issue, not sure what is going on
>>>>> I do get exception as
>>>>> org.apache.camel.component.http.HttpOperationFailedException. I have
>>>>> the
>>>>> exception log attached below.
>>>>> But when I tried getting the exception as HttpOperationFailedException
>>>>> it
>>>>> prints NULL and prints "exception is not instanceof
>>>>> http.HttpOperationFailedException" from the below log statements.
>>>>> Any help is appreciated
>>>>>
>>>>> Here is the code snippet
>>>>> onException(Exception.class).onWhen(new Predicate() {
>>>>>
>>>>>                   public boolean matches(Exchange exchange) {
>>>>>                           log.info(exchange);
>>>>> org.apache.camel.component.http.HttpOperationFailedException ex1 =
>>>>> exchange.getProperty(Exchange.EXCEPTION_CAUGHT,
>>>>>                                   
>>>>> org.apache.camel.component.http.HttpOperationFailedException.class);
>>>>>                           log.info("HttpOperatioFailedException is:"+ex1);
>>>>>                           Exception ex = 
>>>>> exchange.getProperty(Exchange.EXCEPTION_CAUGHT,
>>>>>                                           Exception.class);
>>>>>                           if(ex instanceof
>>>>> org.apache.camel.component.http.HttpOperationFailedException){
>>>>>                                   log.info("exception is instanceof
>>>>> http.HttpOperationFailedException");
>>>>>                                   
>>>>> org.apache.camel.component.http.HttpOperationFailedException ex2
>>>>> =(org.apache.camel.component.http.HttpOperationFailedException)ex;
>>>>>                                   log.info("response body is:"+ 
>>>>> ex2.getResponseBody());
>>>>>                           }
>>>>>                           else{
>>>>>                                   log.info("exception is not instanceof
>>>>> http.HttpOperationFailedException");
>>>>>                           }
>>>>>
>>>>> 2010-06-11 12:18:29,898 |12:18:29,898 | ERROR | tenerContainer-5 |
>>>>> DefaultErrorHandler              | rg.apache.camel.processor.Logger 
>>>>> 248
>>>>> |
>>>>> Failed delivery for exchangeId:
>>>>> ID:LPF004689-2995-1276268480402-0:6:1:1:1.
>>>>> Exhausted after delivery attempt: 2 caught:
>>>>> org.apache.camel.component.http.HttpOperationFailedException: HTTP
>>>>> operation
>>>>> failed invoking http://localhost/orderapp/OrderProcess with
>>>>> statusCode:
>>>>> 500.
>>>>> Processed by failure processor:
>>>>> Pipeline[Channel[sendTo(Endpoint[jms://queue:MM.500Q])],
>>>>> channel[com.pf.simpleconsumer.camelrouter.defaulterrorhand...@1bc1819]]
>>>>> org.apache.camel.component.http.HttpOperationFailedException: HTTP
>>>>> operation
>>>>> failed invoking http://localhost/orderapp/OrderProcess with
>>>>> statusCode:
>>>>> 500
>>>>>   at
>>>>> org.apache.camel.component.http.HttpProducer.populateHttpOperationFailedException(HttpProducer.java:150)
>>>>>   at
>>>>> org.apache.camel.component.http.HttpProducer.process(HttpProducer.java:92)
>>>>>   at
>>>>> org.apache.camel.processor.SendProcessor$1.doInProducer(SendProcessor.java:97)
>>>>>   at
>>>>> org.apache.camel.processor.SendProcessor$1.doInProducer(SendProcessor.java:95)
>>>>>   at
>>>>> org.apache.camel.impl.ProducerCache.doInProducer(ProducerCache.java:146)
>>>>>
>>>>>
>>>>>
>>>>> willem.jiang wrote:
>>>>>> Hi,
>>>>>>
>>>>>> You can get the soap fault  message detail by checking out the 
>>>>>> responseBody from the HttpOperationFailedException.
>>>>>>
>>>>>> Willem
>>>>>>
>>>>>> gnanda wrote:
>>>>>>> Hi All,
>>>>>>> I am using camel 2.2 with servicemix 4.2
>>>>>>> I am trying to retrieve soapFault message from
>>>>>>> HttpOperationFailedException
>>>>>>> I could able to print the exception as below
>>>>>>> Exception ex =
>>>>>>> exchange.getProperty(Exchange.EXCEPTION_CAUGHT,Exception.class);
>>>>>>> log.info(ex);
>>>>>>> It prints the message as below
>>>>>>> "org.apache.camel.component.http.HttpOperationFailedException: HTTP
>>>>>>> operation failed invoking
>>>>>>> http://localhost/orderapp/OrderProcess?httpClientConfigurerRef=com.pf.simpleconsumer.camelrouter.DefaultHttpClientConfigurer
>>>>>>> with statusCode: 500"
>>>>>>>
>>>>>>> The above string does not have soapfault message.How would I extract
>>>>>>> soapfault message in my onException() block ?
>>>>>>> How do I retrieve the fault code?
>>>>>>>
>>>>>>> Any help is appreciated
>>>>>>>
>>>>>>>
>>>>>>
>>>>
>>>>
>>>  http://old.nabble.com/file/p28863872/SCRouterBuilder.java
>>> SCRouterBuilder.java 
>>>
>> 
> 
> 
> 

-- 
View this message in context: 
http://old.nabble.com/reading-soapfault-message-from-HttpOperationFailedException-tp28847433p28880484.html
Sent from the Camel - Users mailing list archive at Nabble.com.

Reply via email to