2017-01-18 7 views
1

inbound-gatewayを使用したSpring統合では、各SOAP WSリクエストを分離したファイルに保存する方法を知っていますか?Spring統合inbound-gateway soap要求をファイルに保存する方法は?

現在、私がで立ち往生:

<!-- inbound --> 
<ws:inbound-gateway id="inbound-gateway" request-channel="SOAPRequestChannel" reply-channel="SOAPResponseChannel"/> 
<int:channel id="SOAPRequestChannel"> 
    <int:interceptors> 
     <int:wire-tap channel="SOAPRequestChannelForLog"/> 
    </int:interceptors> 
</int:channel> 
<int:channel id="SOAPResponseChannel" /> 
<int:channel id="SOAPRequestChannelForLog" /> 

<int:logging-channel-adapter id="logger" expression="payload" level="INFO" channel="SOAPRequestChannelForLog"/> 

しかし、それだけで1ファイル内のすべての要求をログに記録します。

または、その要求をファイルに保存するメソッドを持つLogToFileのような別のクラスを作成する必要があります。int:logging-channel-adapterをint:service-activatorに置き換えますか? Springは各SOAP要求をすぐにログに記録できますか?参考文献を読みましたが、何も見つかりませんでした。

さらに良い方法がありますか?^_^

よろしく、

+1

最初にSpring Web Service 2 Cookbookの本を読んで、SpringのサポートPayloadLoggingInterceptorとSoapEnvelopeLoggingInterceptorを見つけました。その後、参照文書をチェックしてください。それがあります^ _^ –

+0

質問に適切な回答をして受け入れてください。それは他の人が解決策を見つけるのを助け、質問は私のダッシュボードから消えるでしょう。または単にそれを削除してください:-) –

+0

こんにちは@Artem Bilan、実際にはPayloadLoggingInterceptorがlog4j2を使用してペイロードをログに記録するため、解決策ではありません。現在、私はlog4j2を設定して各リクエスト/レスポンスを別々に記録する方法を知らない。とにかく、私は一時的な答えを入れました。 –

答えて

1

説明するように、私は分離したファイルにログを記録log4j2する方法で結合しますが^

です。はい、Log4j2がその1つです。 Commons Loggingからターゲットimplへの適切なブリッジを持つだけでよい。 Log4jのすぐ使えるようです...

各リクエストを独自のファイルに保存する場合は、その目的では<int-file:outbound-channel-adapter>を使用することを検討してください。 source<ws:inbound-gateway>後のメッセージの​​ある

Transformer transformer = createNonIndentingTransformer(); 
StringWriter writer = new StringWriter(); 
transformer.transform(source, new StreamResult(writer)); 
String message = writer.toString(); 

は、あなただけの着信メッセージに基づいて適切なコンテンツを構築する必要があります。

そのメッセージまたは他の環境に基づいてfile nameを把握するだけで済みます。

+0

ああ、int-fileがあるのを知らなかった:outbound-channel^_^ –

+1

'int-file:outbound-channel-adapter'をドキュメントのリンクに変換しました –

1

を私は、参照文書をチェックし、最初の著書春のWebサービス2クックブックを読むことによって、バネ支持PayloadLoggingInterceptor & SoapEnvelopeLoggingInterceptorを見つけました。これは、すべてのPayloadLoggingInterceptorの第一は、org.apache.commons.logging.Logに基づいており、それがすでに使用するロギングシステムをターゲットアプリケーションの責任ですされ、ここで Log4j2: How to write logs to separate files for each user?

関連する問題