2016-08-29 46 views
0

。我通过骆驼航线调用示例SOAP,WS我只是想从服务电话和从服务呼叫不成功执行成功执行后,HTTP状态代码(响应码200一样OK)通过Webservice处理异常在Camel路由中jboss Fuse

2.我m通过骆驼路由调用示例REST-WS我只需要在服务调用成功执行后以及从服务调用执行失败后的http状态代码(响应代码为200 OK)在这两种情况下,我们的业务逻辑都会被触发。 我已经试过

//Camel-context <camelContext xmlns="http://camel.apache.org/schema/spring" handleFault="true"> 
    <onException> 
    <exception>org.apache.cxf.binding.soap.SoapFault</exception> 
    <exception>java.lang.Exception</exception> 
    <handled><constant>true</constant></handled> 
    <bean ref="exceptionHandlerforWS"/> 
    </onException> <route> 

    <from uri="cxf:bean:ToStartRoute"/> 
    <bean ref="InputforWS"/> 
    <to uri="cxf:bean:factorial_WS"/> 
    <bean ref="OutputFromWS"/> 
    </route> 
    </camelContext> 

    // exceptionHandlerforWS Exception cause = exchange.getProperty(Exchange.EXCEPTION_CAUGHT, Exception.class); 
if(cause.getMessage().contains("404")) { System.out.println("getting 404 from Service"); } 

问题陈述:

我们究竟应该接受来自Web服务调用成功或失败的情况下,HTTP状态代码?我试过甚至System.out.println((Exchange.HTTP_RESPONSE_CODE)); 但打印静态字符串“CamelHTTPResponseCode”

2.我们要区分成功的网络服务执行和失败的Web服务的执行,我们究竟如何能做到这一点

3.我该如何处理骆驼路线中的SoapFault?

回答

0

SOAP故障默认情况下不是一个例外。您可以在<camelContext ...>上启用handleFault=true将SOAP错误转换为一个异常,骆驼错误处理程序可以检测并处理/作出反应。

可以使用tracer查看在调用CXF WS之前和之后,Camel消息包含哪些数据,它可以帮助您找出返回哪些头等,您可以使用它来检查成功与不成功调用。

http://camel.apache.org/tracer

+0

嗨克劳斯,我正在试图处理SoapFaults我自己,我不能让它开始工作。我试着设置handleFault,然后使用onException-clause。但是,尝试启动该捆绑时,我收到了一个ClassNotFoundException。我正在使用Blueprint btw配置我的路线。我希望你想扩大你目前的答案。 – noMad17

+0

我试着设置'handleFault = true',然后使用onException-clause和Do try Catch块。但如果有任何响应,则不会获取HTTP_RESPONSE_CODE。 –