アプリケーションから送信された SOAP トランザクションを表示する UI を構築しようとしています。
典型的なシナリオは、各ユーザー トランザクションに複数のシステムへの複数の Web サービス リクエストが含まれており、そのユーザー トランザクションの transactionId を生成し、その transactionId を使用してすべてのログをログ ファイルに記録し、transactionId を使用してログ ファイルを検索できるようにすることです。対応するログ ステートメントを UI に表示できます。
したがって、生成された transactionId をすべてのログ ステートメントに追加し、それらをログ ファイルから取得することができます。
しかし問題は、SOAP リクエストの場合、SOAP リクエストのログ ファイルに同じ transactionId を追加する方法を見つけられないことです。
生成された transactionId を CXF インターセプター (またはカスタム CXF インターセプター) に渡して、CXF が SOAP 要求と応答をログに記録するときに、渡された transactionId を追加する方法を教えてください。
このような
INFO: Outbound Message
---------------------------
transactionId=1234ABCXXX
ID: 1
Address: http://localhost:8080/Zservice/get?wsdl
Encoding: UTF-8
Http-Method: POST
Content-Type: text/xml
Headers: {Accept=[*/*], SOAPAction=[""]}
Payload: <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"><soap:Body><ns2:get xmlns:ns2="http://service.zservice.com/"><arg0/></ns2:get></soap:Body></soap:Envelope>