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


Reply via email to