tim08
tim08

Reputation: 27

camel cxf-client does not handle errors if there is no output in wsdl

if there is no output in wsdl no error is handled if host is unavailable, if host is available - no CamelHttpResponseCode header wsdl:

    <binding name="NumberConversionSoapBinding" type="tns:NumberConversionSoapType">
        <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
        <operation name="NumberToWords">
            <soap:operation soapAction="" style="document"/>
            <input>
                <soap:body use="literal"/>
            </input>
        </operation>
    </binding>

blueprint route:

    <camelcxf:cxfEndpoint xmlns:camelcxf="http://camel.apache.org/schema/blueprint/cxf" xmlns:service="http://www.dataaccess.com/webservicesserver/"
                          id="numberConversionSoap" address="http://myhost:8088/mockNumberConversionSoapBinding" serviceName="service:NumberConversion"
                          endpointName="service:NumberConversionSoap" wsdlURL="mockNumberConversionSoapBinding.wsdl">

        <camelcxf:properties>
            <entry key="dataFormat" value="PAYLOAD"/>
            <entry key="mtom-enabled" value="false"/>
            <entry key="loggingFeatureEnabled" value="true"/>
        </camelcxf:properties>
    </camelcxf:cxfEndpoint>
...
        <route>
            <from uri="jms:queue:myQueue"/>

            <onException >
                <exception>java.lang.Exception</exception>
                <to uri="direct:ErrorHandler"/>
            </onException>

            <setHeader headerName="operationName">
                <constant>NumberToWords</constant>
            </setHeader>
            <to uri="cxf:bean:numberConversionSoap"/>
            <convertBodyTo type="String"/>
            <to uri="log:resp?showAll=true"/>
        </route>

the only thing I can see if I'm unavailable http://myhost:8088/mockNumberConversionSoapBinding :

WARN [Camel thread #72 - JmsConsumer[soap-connector-sap_po]] Interceptor for {http://www.dataaccess.com/webservicesserver/}NumberConversion#{http://www.dataaccess.com/webservicesserver/}NumberToDollars has thrown exception, unwinding now
org.apache.cxf.interceptor.Fault: Could not send Message.
        at org.apache.cxf.interceptor.MessageSenderInterceptor$MessageSenderEndingInterceptor.handleMessage(MessageSenderInterceptor.java:67) ~[!/:3.3.10]
        at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:308) [!/:3.3.10]
        at org.apache.cxf.endpoint.ClientImpl.doInvoke(ClientImpl.java:530) [!/:3.3.10]
        at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:434) [!/:3.3.10]
        at org.apache.camel.component.cxf.CxfProducer.process(CxfProducer.java:133) [!/:2.25.4]
        at org.apache.camel.processor.SendProcessor.process(SendProcessor.java:148) [!/:2.25.4]
        at org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:548) [!/:2.25.4]
        at org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:201) [!/:2.25.4]
        at org.apache.camel.processor.Pipeline.process(Pipeline.java:138) [!/:2.25.4]
        at org.apache.camel.processor.Pipeline.process(Pipeline.java:101) [!/:2.25.4]
        at org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:201) [!/:2.25.4]
        at org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:97) [!/:2.25.4]
        at org.apache.camel.component.jms.EndpointMessageListener.onMessage(EndpointMessageListener.java:113) [!/:2.25.4]
        at org.springframework.jms.listener.AbstractMessageListenerContainer.doInvokeListener(AbstractMessageListenerContainer.java:736) [!/:?]
        at org.springframework.jms.listener.AbstractMessageListenerContainer.invokeListener(AbstractMessageListenerContainer.java:696) [!/:?]
        at org.springframework.jms.listener.AbstractMessageListenerContainer.doExecuteListener(AbstractMessageListenerContainer.java:674) [!/:?]
        at org.springframework.jms.listener.AbstractPollingMessageListenerContainer.doReceiveAndExecute(AbstractPollingMessageListenerContainer.java:331) [!/:?]
        at org.springframework.jms.listener.AbstractPollingMessageListenerContainer.receiveAndExecute(AbstractPollingMessageListenerContainer.java:270) [!/:?]
        at org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.invokeListener(DefaultMessageListenerContainer.java:1237) [!/:?]
        at org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.executeOngoingLoop(DefaultMessageListenerContainer.java:1227) [!/:?]
        at org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.run(DefaultMessageListenerContainer.java:1120) [!/:?]
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [?:1.8.0_422]
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [?:1.8.0_422]
        at java.lang.Thread.run(Thread.java:750) [?:1.8.0_422]
Caused by: java.net.ConnectException: ConnectException invoking http://192.145.22.11:8088/mockNumberConversionSoapBinding: Connection timed out: connect
        at sun.reflect.GeneratedConstructorAccessor242.newInstance(Unknown Source) ~[?:?]
        at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) ~[?:1.8.0_422]
        at java.lang.reflect.Constructor.newInstance(Constructor.java:423) ~[?:1.8.0_422]
        at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.mapException(HTTPConduit.java:1400) ~[!/:3.3.10]
        at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.close(HTTPConduit.java:1384) ~[!/:3.3.10]
        at org.apache.cxf.ext.logging.LoggingOutputStream.postClose(LoggingOutputStream.java:53) ~[!/:3.3.10]
        at org.apache.cxf.io.CachedOutputStream.close(CachedOutputStream.java:228) ~[!/:3.3.10]
        at org.apache.cxf.transport.AbstractConduit.close(AbstractConduit.java:56) ~[!/:3.3.10]
        at org.apache.cxf.transport.http.HTTPConduit.close(HTTPConduit.java:671) ~[!/:3.3.10]
        at org.apache.cxf.interceptor.MessageSenderInterceptor$MessageSenderEndingInterceptor.handleMessage(MessageSenderInterceptor.java:63) ~[!/:3.3.10]
        ... 23 more
Caused by: java.net.ConnectException: Connection timed out: connect

the exception is not raised or caught I don't think this is normal behaviour, is it a bug of the camel-cxf component or the cxf framework? my stack: karaf 4.2.16, camel 2.24.5(camel-cxf), cxf 3.3.10

Upvotes: 0

Views: 20

Answers (0)

Related Questions