0

Web サービス ベースのインバウンド メッセージング ゲートウェイを構成しています。着信 SOAP メッセージ (エンベロープとその中のすべて) をログに記録したいと思います。それを行う最善の方法は何ですか?

ロギング チャネル アダプタでワイヤ タップを使用してみましたが、実際の SOAP XML を取得するための適切な式の値がわかりません。受信ゲートウェイがペイロードを抽出しないように構成されている場合、SaajSoapMessage がペイロードとして表示され、それ以外の場合は DOMSource が表示されます。SaajSoapMessage を XML 文字列として取得する式はありますか?

SaajSoapMessage の toString() を表示するための構成は次のとおりです。

<int:channel id="request">
    <int:interceptors>
        <int:wire-tap channel="logger"/>
    </int:interceptors>
</int:channel>
<int:logging-channel-adapter id="logger" expression="payload" level="DEBUG"/>

<int:channel id="reply"/>
<int-ws:inbound-gateway id="ws-inbound-gateway" request-channel="request" reply-channel="reply"
                        extract-payload="false"/>
4

2 に答える 2

0

Spring Integration は、Spring Web サービスの上にあります。SWS には、ペイロードやエンベロープを記録できるインターセプターがいくつかあります...

http://static.springsource.org/spring-ws/sites/2.0/reference/html/server.html#d5e1416

于 2013-04-05T13:48:10.467 に答える
0

Spring Web Services は、使用できるインターセプターを提供します。

マーシャラーとアンマーシャラーを使用する場合、両方に、マーシャリング/アンマーシャリングを実行する前後に何かを実行できるリスナーがあります。

ws-inbound-gateway の前後にメッセージに追加された情報を取得する必要がある場合は、サービス アクティベーターを使用できます。

例外を確実にログに記録したい場合は、セグメント ゲートウェイと、そのメッセージ フロー内のサービス アクティベーターを検討してください。

于 2013-04-12T16:31:34.877 に答える