2016-08-29 6 views
0

私はcamelルートを使ってSOAP-WSサンプルを呼び出しています。サービスコールからの実行が成功し、サービスコールからの実行に失敗した後、httpステータスコード(200 OKのような応答コード)を取得したいだけですCamel Route jbossフューズのWebサービスによる例外処理の例外処理

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ステータスコードを取得することになっているかを正確に

1.? 私もSystem.out.printlnを試しました((Exchange.HTTP_RESPONSE_CODE)); それは静的な文字列「CamelHTTPResponseCode」我々は、我々はそれを行うことができます正確にどのように成功したWebサービスの実行と失敗したWebサービスの実行を区別したい

2.を印刷していますか?

キャメルルートでSoapFaultを処理するにはどうすればよいですか?

答えて

0

デフォルトでは、SOAPフォルトは例外ではありません。 <camelContext ...>のを有効にして、SOAPエラーを例外にすることができます。これはCamelエラーハンドラが検出して処理/応答することができます。

CXF WSを呼び出す前と後にキャメルメッセージに含まれるデータを確認することで、どのヘッダなどが返されたかを知ることができます。成功したかどうかを確認できます。

http://camel.apache.org/tracer

+0

こんにちはクラウス、私は現在、私と私はそれを動作させることはできませんSoapFaultsを処理しようとしています。私は、handleFaultを設定してからonException節を使用してみました。しかし、バンドルを開始しようとすると、ClassNotFoundExceptionが発生します。 Blueprint btwを使用してルートを設定しています。あなたの現在の答えを広げたいと思っています。 – noMad17

+0

私は 'handleFault = true'を設定してからonException節とDo try Catchブロックを使ってみました。しかし、200 OK以外の応答の場合はHTTP_RESPONSE_CODEを取得しません。 –