camel-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Willem Jiang <willem.ji...@gmail.com>
Subject Re: TraceHandler not being called when there is a fault on an asynchronous CXF endpoint
Date Tue, 19 Jul 2011 10:40:16 GMT
What are the MessageLogger{In|Out}bound doing ?
Can you try to change your route like this to see if the error goes out?

<camel:route>
        <camel:from 
uri="cxf:bean:serviceGroups?dataFormat=PAYLOAD&amp;synchronous=false"/>
         <camel:to 
uri="cxf:bean:targetGroups?dataFormat=PAYLOAD&amp;synchronous=true"/>
</camel:route>

On 7/19/11 6:20 PM, James Talbut wrote:
> Willem,
>
> I'm afraid I can't give you the actual WSDL and URLs (they're from a third party), but
I don't think they'll make a difference, they just return a soap:Fault.
>
> The route (and associated config) is:
>    <bean id="traceHandler" class="com.groupgti.routemaster.trace.test.RouteMasterLoggingTraceHandler"
xmlns:cxf="http://camel.apache.org/schema/cxf"/>
>    <bean id="soapFaultConverter" class="com.groupgti.routemaster.soapFaultConverter.SoapFaultConverter"
xmlns:cxf="http://camel.apache.org/schema/cxf"/>
>
>    <bean id="tracer" class="org.apache.camel.processor.interceptor.Tracer">
>      <property name="traceHandler" ref="traceHandler"/>
>      <property name="enabled" value="true"/>
>      <property name="traceOutExchanges" value="true"/>
>      <property name="logLevel" value="OFF"/>
>    </bean>
>
>    <bean id="cxfInboundLoggingInterceptor" class="com.groupgti.routemaster.cxf.interceptors.test.MessageLoggerInbound"/>
>    <bean id="cxfOutboundLoggingInterceptor" class="com.groupgti.routemaster.cxf.interceptors.test.MessageLoggerOutbound"/>
>
>    <cxf:bus>
>      <cxf:inInterceptors>
>        <ref bean="cxfInboundLoggingInterceptor"/>
>      </cxf:inInterceptors>
>      <cxf:outInterceptors>
>        <ref bean="cxfOutboundLoggingInterceptor"/>
>      </cxf:outInterceptors>
>      <cxf:inFaultInterceptors>
>        <ref bean="cxfInboundLoggingInterceptor"/>
>      </cxf:inFaultInterceptors>
>      <cxf:outFaultInterceptors>
>        <ref bean="cxfOutboundLoggingInterceptor"/>
>      </cxf:outFaultInterceptors>
>    </cxf:bus>
>
>    <camel-cxf:cxfEndpoint xmlns:ns="http://schemas.datacontract.org/..."
>                           id="targetGroups"
>                           address="https://remotehost/..."
>                           wsdlURL="http://..."
>                           serviceName="ns:Groups"
>                           endpointName="ns:GroupsSoap"
>                           serviceClass="GroupsSoap"/>
>
>    <camel-cxf:cxfEndpoint xmlns:ns="http://schemas.datacontract.org/.."
>                           id="serviceGroups"
>                           address="http://localhost:9000/..."
>                           wsdlURL="http://..."
>                           serviceName="ns:Groups"
>                           endpointName="ns:GroupsSoap"/>
>
>    <camel:camelContext id="sampleHashCamelContext">
>
>      <camel:route>
>        <camel:from uri="cxf:bean:serviceGroups?dataFormat=PAYLOAD&amp;synchronous=false"/>
>        <camel:to uri="cxf:bean:targetGroups?dataFormat=PAYLOAD&amp;synchronous=false"/>
>      </camel:route>
>
>    </camel:camelContext>
>
>
>
> Changing the dataFormat doesn't seem to make any difference.
> The "synchronous=false" was added just to see if I could make it hit the problem under
the debugger, and it does hit it there now.
>
> It looks like the Camel TraceHandler is being called before the CXF interceptor, but
at this stage I can't work out how that happens.
>
> Thanks.
>
> Jim
>
>
> On Tue, Jul 19, 2011 at 06:04:16PM +0800, Willem Jiang wrote:
>> Can you post your route, or submit a simple test case to show the error ?
>> It look like a time issue of CXF endpoint which is working in async
>> module by default. But I cannot tell more just by looking up the
>> description that you gave in the mail.
>>
>>
>>
>> On 7/19/11 4:43 PM, James Talbut wrote:
>>> Hi,
>>>
>>> I'm using a combination of a Camel TraceHandler and a CXF interceptor to capture
on-the-wire messages and log them with the Camel message.
>>> In normal use this all works, but when I have an error the Camel TraceHandler
isn't being called (the rest of the route is picking up the error correctly, it's just the
>>> tracing that isn't working).
>>>
>>> When I run under the debugger everything works as expected.
>>> When I add synchronous=true to the CXF endpoints everything works as expected.
>>>
>>> Anyone got any ideas or suggestions for where I should look?
>>>
>>> This is with Camel 2.7.1, running on Windows.
>>>
>>> Thanks.
>>>
>>> Jim
>>>
>>
>>
>> --
>> Willem
>> ----------------------------------
>> FuseSource
>> Web: http://www.fusesource.com
>> Blog:    http://willemjiang.blogspot.com (English)
>>            http://jnn.javaeye.com (Chinese)
>> Twitter: willemjiang
>> Weibo: willemjiang
>


-- 
Willem
----------------------------------
FuseSource
Web: http://www.fusesource.com
Blog:    http://willemjiang.blogspot.com (English)
          http://jnn.javaeye.com (Chinese)
Twitter: willemjiang
Weibo: willemjiang

Mime
View raw message