Reputation: 27
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