I'm stuck with that.

Anyone with any clue ? ;)


On Mon, Jul 21, 2008 at 2:06 PM, Manuel EVENO <[EMAIL PROTECTED]>
wrote:

> Maybe, I've done something wrong but now I don't have any response on
> error.
> Here is the log for the client (using CXF), the response payload is empty
> and there's no soap fault.
>
> *INFO: Outbound Message
> ---------------------------
> Encoding: UTF-8
> Headers: {SOAPAction=[""], Accept=[*]}
> Messages:
> Payload: <soap:Envelope xmlns:soap="
> http://schemas.xmlsoap.org/soap/envelope/";><**soap:Body><ns1:sayHello
> xmlns:ns1="http://hello.samples.sofinco.com";><arg0 xmlns:ns2="
> http://hello.samples.sofinco.com";>Manuel</**arg0></ns1:sayHello></soap:**
> Body></soap:Envelope>
> ------------------------------**--------
> 21 juil. 2008 11:22:51 org.apache.cxf.interceptor.**LoggingInInterceptor
> logging
> INFO: Inbound Message
> ----------------------------
> Encoding: UTF-8
> Headers: {transfer-encoding=[chunked], Server=[Jetty(6.1.5)]}
> Messages:
> Message:
>
> Payload:
> ------------------------------**--------
> 21 juil. 2008 11:22:51 org.apache.cxf.phase.**PhaseInterceptorChain
> doIntercept
> INFO: Interceptor has thrown exception, unwinding now
> org.apache.cxf.binding.soap.**SoapFault: Error reading XMLStreamReader.
>     at org.apache.cxf.binding.soap.**interceptor.**ReadHeadersInterceptor.
> **handleMessage(**ReadHeadersInterceptor.java:**183)
>     at org.apache.cxf.binding.soap.**interceptor.**ReadHeadersInterceptor.
> **handleMessage(**ReadHeadersInterceptor.java:**54)
>     at org.apache.cxf.phase.**PhaseInterceptorChain.**doIntercept(**
> PhaseInterceptorChain.java:**221)
>     at org.apache.cxf.endpoint.**ClientImpl.onMessage(**
> ClientImpl.java:449)
>     at org.apache.cxf.transport.http.**HTTPConduit$**WrappedOutputStream.*
> *handleResponse(HTTPConduit.**java:1996)
>     at org.apache.cxf.transport.http.**HTTPConduit$**
> WrappedOutputStream.close(**HTTPConduit.java:1832)
>     at org.apache.cxf.io.**CacheAndWriteOutputStream.**postClose(**
> CacheAndWriteOutputStream.**java:47)
>     at org.apache.cxf.io.**CachedOutputStream.close(**
> CachedOutputStream.java:159)
>     at org.apache.cxf.transport.**AbstractConduit.close(**
> AbstractConduit.java:66)
>     at org.apache.cxf.transport.http.**HTTPConduit.close(HTTPConduit.**
> java:591)
>     at org.apache.cxf.interceptor.**MessageSenderInterceptor$**
> MessageSenderEndingInterceptor**.handleMessage(**
> MessageSenderInterceptor.java:**62)
>     at org.apache.cxf.phase.**PhaseInterceptorChain.**doIntercept(**
> PhaseInterceptorChain.java:**221)
>     at org.apache.cxf.endpoint.**ClientImpl.invoke(ClientImpl.**java:296)
>     at org.apache.cxf.endpoint.**ClientImpl.invoke(ClientImpl.**java:242)
>     at org.apache.cxf.endpoint.**ClientImpl.invoke(ClientImpl.**java:200)
>     at org.apache.cxf.endpoint.**ClientImpl.invoke(ClientImpl.**java:220)
>     at org.apache.cxf.endpoint.**ClientImpl.invoke(ClientImpl.**java:206)
>     at com.sofinco.samples.hello.**HelloServiceClient.sayHello(**
> HelloServiceClient.java:29)
>     at com.sofinco.samples.hello.**HelloServiceClientTest.**
> testSayHelloESBWithJaxWsProxy(**HelloServiceClientTest.java:**29)
>     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:597)
>     at org.junit.internal.runners.**TestMethod.invoke(TestMethod.**
> java:59)
>     at org.junit.internal.runners.**MethodRoadie.runTestMethod(**
> MethodRoadie.java:98)
>     at org.junit.internal.runners.**MethodRoadie$2.run(**
> MethodRoadie.java:79)
>     at org.junit.internal.runners.**MethodRoadie.**
> runBeforesThenTestThenAfters(**MethodRoadie.java:87)
>     at org.junit.internal.runners.**MethodRoadie.runTest(**
> MethodRoadie.java:77)
>     at org.junit.internal.runners.**MethodRoadie.run(MethodRoadie.**
> java:42)
>     at org.junit.internal.runners.**JUnit4ClassRunner.**invokeTestMethod(*
> *JUnit4ClassRunner.java:88)
>     at org.junit.internal.runners.**JUnit4ClassRunner.runMethods(**
> JUnit4ClassRunner.java:51)
>     at org.junit.internal.runners.**JUnit4ClassRunner$1.run(**
> JUnit4ClassRunner.java:44)
>     at org.junit.internal.runners.**ClassRoadie.runUnprotected(**
> ClassRoadie.java:27)
>     at org.junit.internal.runners.**ClassRoadie.runProtected(**
> ClassRoadie.java:37)
>     at org.junit.internal.runners.**JUnit4ClassRunner.run(**
> JUnit4ClassRunner.java:42)
>     at org.eclipse.jdt.internal.**junit4.runner.**JUnit4TestReference.run(
> **JUnit4TestReference.java:45)
>     at org.eclipse.jdt.internal.**junit.runner.TestExecution.**
> run(TestExecution.java:38)
>     at org.eclipse.jdt.internal.**junit.runner.RemoteTestRunner.**
> runTests(RemoteTestRunner.**java:460)
>     at org.eclipse.jdt.internal.**junit.runner.RemoteTestRunner.**
> runTests(RemoteTestRunner.**java:673)
>     at org.eclipse.jdt.internal.**junit.runner.RemoteTestRunner.**
> run(RemoteTestRunner.java:386)
>     at org.eclipse.jdt.internal.**junit.runner.RemoteTestRunner.**
> main(RemoteTestRunner.java:**196)
> Caused by: com.ctc.wstx.exc.**WstxEOFException: Unexpected EOF in prolog
>  at [row,col {unknown-source}]: [1,0]
>     at com.ctc.wstx.sr.StreamScanner.**throwUnexpectedEOF(**
> StreamScanner.java:661)
>     at com.ctc.wstx.sr.**BasicStreamReader.handleEOF(**
> BasicStreamReader.java:2134)
>     at com.ctc.wstx.sr.**BasicStreamReader.**nextFromProlog(**
> BasicStreamReader.java:2040)
>     at com.ctc.wstx.sr.**BasicStreamReader.next(**
> BasicStreamReader.java:1069)
>     at com.ctc.wstx.sr.**BasicStreamReader.nextTag(**
> BasicStreamReader.java:1095)
>     at org.apache.cxf.binding.soap.**interceptor.**ReadHeadersInterceptor.
> **handleMessage(**ReadHeadersInterceptor.java:**83)
>     ... 40 more
> *
> I found a log entry telling Camel called my processor but it seems to do
> nothing :
>
> *11:40:53,280 | ERROR | pool-flow.seda.servicemix-camel-thread-3 |
> DeadLetterChannel        | .apache.camel.processor.Logger  152 | Failed
> delivery for exchangeId: ID-PSP0020/4119-1216629810312/0-8. Handled by the
> failure processor: [EMAIL PROTECTED]
> *
> Here is the camel config (Java) :
>
> *        DeadLetterChannelBuilder deadLetterChannel = deadLetterChannel();
>         deadLetterChannel.setRedeliveryPolicy(redeliveryPolicy);
>         deadLetterChannel.setDefaultDeadLetterEndpoint(new
> ErrorProcessor());
>         errorHandler(deadLetterChannel);
> *
> And the ErrorProcessor class :
>
> *public final class ErrorProcessor implements Processor {
>     public void process(Exchange exchange) throws Exception {
>         throw new CamelExchangeException("Message redelivery failed",
> exchange);
>     }
> }
> *
>
> I've also tried another ErrorProcessor :
>
> *public final class ErrorProcessor implements Processor {
>     private static final Logger logger =
> Logger.getLogger(ErrorProcessor.class);
>     public void process(Exchange exchange) throws Exception {
>         Throwable exception = (Throwable)
> exchange.getProperty(DeadLetterChannel.EXCEPTION_CAUSE_PROPERTY);
>         if (exception != null) {
>             exchange.setException(exception);
>         } else {
>             DeadLetterChannel.restoreExceptionOnExchange(exchange);
>         }
>         if (exchange.getException() == null) {
>             exchange.getFault(true).setBody(new
> CamelExchangeException("Message redelivery failed", exchange));
>         }
>         logger.info("Setting exchange exception to
> "+exchange.getException());
>         logger.info("Exchange.isFailed()="+exchange.isFailed());
>     }
> }
> *
>
> Which imply the same behavior ...
>
> (See the complete servicemix log file attached)
>
> Any clue ?
> Manuel
>
>
> On Mon, Jul 21, 2008 at 10:37 AM, Gert Vanthienen <
> [EMAIL PROTECTED]> wrote:
>
>>
>> Manuel,
>>
>> The trick with the Processor should work as well.  Are you experiencing
>> any
>> problems with it?
>>
>> Gert
>>
>>
>> Manuel EVENO wrote:
>> >
>> > Thanks Gert for these information !
>> >
>> > I foudn the way to configure the deadLetterChannel Behavior but I stil
>> > can't
>> > configure the final exception behavior.
>> >
>> >>> If you want the DeadLetterChannel handling to fail (instead of log)
>> >>> after
>> > the redelivery attempts, you can end the deadLetterChannel()
>> >>> clause in your RouteBuilder with .throwFault() to force the exception.
>> >
>> > The .throwFault() method seems to be part of the ProcessorType class but
>> > the
>> > ErrorHandlerBuilderSupport (and DeadLetterChannelBuilder) class doesn't
>> > have
>> > such method.
>> > Guided by your hint (specially reading your sentence "instead of log"),
>> > I've
>> > looked for the log step and found the defaultDeadLetterEndpointUri which
>> > points to log:org.apache.camel.DeadLetterChannel?level=error";
>> >
>> > So if I change the default dead letter endpoint to the following, does
>> > this
>> > make the exception trick ?
>> >
>> >         deadLetterChannel.setDefaultDeadLetterEndpoint(new Processor() {
>> >             public void process(Exchange exchange) throws Exception {
>> >                 throw new CamelExchangeException("All message
>> redeliveries
>> > failed", exchange);
>> >             }
>> >         });
>> >
>> > Manuel
>> >
>> > On Mon, Jul 21, 2008 at 7:57 AM, Gert Vanthienen
>> > <[EMAIL PROTECTED]>
>> > wrote:
>> >
>> >> Manuel,
>> >>
>> >> If you do not configure any specific ErrorHandler in your Camel
>> >> RouteBuilder, Camel will default to using a DeadLetterChannel handler
>> >> with
>> >> 5? re-delivery attempts and logging an error after these delivery
>> >> attempts.
>> >>  From a JBI perspective, by logging the error message, it has been
>> >> handled
>> >> and that's why you are getting the DONE status back.  We're looking to
>> >> changing this default behavior for a next release of Camel.
>> >>
>> >> For now, you can configure a more appropriate ErrorHandler yourself.
>>  If
>> >> you want no error handling by Camel at all, you can use
>> >> errorHandler(noErrorHandler()) at the top of your RouteBuilder to get
>> >> this
>> >> done.  This page (http://activemq.apache.org/camel/error-handler.html)
>> >> shows you a bit more information about configuring Camel error handler
>> >> strategies.  You can also find examples on how to configure the
>> >> deadletterchannel.  If you want the DeadLetterChannel handling to fail
>> >> (instead of log) after the redelivery attempts, you can end the
>> >> deadLetterChannel() clause in your RouteBuilder with .throwFault() to
>> >> force
>> >> the exception.
>> >>
>> >> Regards,
>> >>
>> >> Gert
>> >>
>> >>
>> >> Manuel EVENO wrote:
>> >>
>> >>> Hi,
>> >>>
>> >>> I've got a mediation with cxf-bc:consumer -> camel ( cxf-bc:provider
>> ->
>> >>> saxon:xquery )
>> >>>
>> >>> Here is the camel route :
>> >>>        from("jbi:service:
>> >>> http://hello.samples.sofinco.com/HelloServiceRoute";)
>> >>>            .to("jbi:endpoint:
>> >>> http://hello.samples.sofinco.com/HelloService/HelloService";)
>> >>>            .to("jbi:endpoint:
>> >>>
>> http://hello.samples.sofinco.com/HelloServiceTransform/HelloServiceTransform
>> >>> ");
>> >>>
>> >>> When the called service (the one used by cxf-bc:provider) is
>> >>> unreachable,
>> >>> no exception is returned to the calling client (the one calling the
>> >>> ESB).
>> >>> The client failed either on a timeout (if the redelivery process takes
>> >>> long time) or by receiving a wrong ouput message (the input message)
>> >>> Why doesn't the default behavior simply send an error ?
>> >>>
>> >>> More strange, the message exchange finished on a 'done' status instead
>> >>> of
>> >>> a 'error' status ...
>> >>>
>> >>> How to configure servicemix (or camel) to send an error back to the
>> >>> client
>> >>> when an error occurs in a message exchange
>> >>> and after the redelivery attempts all failed ?
>> >>>
>> >>> Manuel
>> >>>
>> >>>
>> >>
>> >>
>> >
>> >
>>
>>
>> -----
>> ---
>> Gert Vanthienen
>> http://www.anova.be
>> --
>> View this message in context:
>> http://www.nabble.com/Understanding-the-default-behavior-on-exception-tp18530599p18564323.html
>> Sent from the ServiceMix - User mailing list archive at Nabble.com.
>>
>>
>

Reply via email to