2016-08-29 63 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。 –