2017-04-12 4 views
1

私は、このラクダのルートがあります。CamelとCXF:送信メッセージを取得するにはどうすればよいですか?

from("cxf:bean:endpointDocs01?loggingFeatureEnabled=true") 
    .to("direct:CBR") 
    .transform().method(WebServiceUtils.class,"response()") 
    .log("Outbound message: ${body}"); 

をendpointDocs01は、このような青写真に定義されています。

<cxf:cxfEndpoint address="/documentos/" id="endpointDocs01" 
    serviceClass="com.adelco.webservice.ServiceDocs" wsdlURL="wsdl/wsdl03.wsdl"> 
    <cxf:properties> 
     <entry key="schema-validation-enabled" value="true"/> 
    </cxf:properties> 
</cxf:cxfEndpoint> 

このルートは、スキーマ検証など、問題なく動作します。 .log( "Outbound message:$ {body}")最後の行を使用して、「もの」(この場合はログ)を行うことができます。この場合、私は間違ったリクエストを送信するとき、ライン」.logには( 『アウトバウンドメッセージをログ

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> 
    <soap:Body> 
     <outputDocumento xmlns="http://webservice.adelco.com"> 
     <respuesta>0</respuesta> 
     <mensaje>El mensaje [113282] fue recibido. Fecha recepción Wed Apr 12 17:01:11 CLT 2017</mensaje> 
     </outputDocumento> 
    </soap:Body> 
</soap:Envelope> 

しかし、::ログはこれを示しています。$ {身体}は』何もしませんが、私はクライアントのレスポンスを取得する(Aソープ:フォールトレスポンス)

なぜこの石鹸:フォールトレスではないロッジd?

+0

は、あなたがキャプチャによって何を意味するか、より良い説明できますか? CXFには入力と出力のロギング機能があり、これをオンにすることができます –

答えて

3

アンマーシャリングの後にあなたのルートが呼び出されます。したがって、入力が無効でアンマーシャリングが失敗した場合、ルートはトリガーされずにログに記録されません。

この記事を読むCXF architectureについて
CXF

位相インターセプタはPhaseInterceptorChain呼ばInterceptorChain実装を提供します。 [...]
仮説的な簡単な例を考えてみましょう(注:これらのフェーズとインターセプタはCXFに必ずしも存在しません)。 SOAPメッセージを解析しているとしましょう。私たちは2つのフェーズを持つことができます。まず、石鹸ヘッダを解析し、メッセージをどのサービスにルーティングするかを決定するディスパッチフェーズ。第2に、SOAPボディをJAXBオブジェクトにバインドする非整列フェーズです。
フォールト処理
処理中のどの時点でも、インターセプタはフォールト、またはSoapFaultのようなフォールトの派生物を投げることがあります。これにより、チェーンが起動して巻き戻されなくなります。 Unwindingは、逆の順序で呼び出された各インターセプタでhandleFaultを呼び出すことから成ります。

フォルトが発生すると、処理が停止し、インターセプタチェーンが巻き戻されます。 CXFはメッセージ(& out)とフォルト(& out)に異なるチェーンを使用します。インターセプタとして(PhaseInterceptorインタフェースを実装しなければならない)カスタム豆を使用するには

<cxf:cxfEndpoint address="/documentos/" id="endpointDocs01" 
    serviceClass="com.adelco.webservice.ServiceDocs" wsdlURL="wsdl/wsdl03.wsdl"> 
    <cxf:properties> 
     <entry key="schema-validation-enabled" value="true"/> 
    </cxf:properties> 
    <cxf:inInterceptors> 
     <ref component-id="inInterceptorBean" /> 
    </cxf:inInterceptors> 
    <cxf:outInterceptors> 
     <ref component-id="outInterceptorBean" /> 
    </cxf:outInterceptors> 
    <cxf:outFaultInterceptors> 
     <ref component-id="outFaultInterceptorBean" /> 
    </cxf:outFaultInterceptors> 
</cxf:cxfEndpoint> 
関連する問題