Apache Tomcat で実行される Web サービス クライアントを作成しています。ログに記録できるように、要求/応答の XML ペイロードを取得する必要があります。
バイトを stdOut にダンプすることは、私が望むものではありません。Javaコードでバイトとして取得したいので、好きなようにログに記録できます。
これを行う方法はありますか?
Apache Tomcat で実行される Web サービス クライアントを作成しています。ログに記録できるように、要求/応答の XML ペイロードを取得する必要があります。
バイトを stdOut にダンプすることは、私が望むものではありません。Javaコードでバイトとして取得したいので、好きなようにログに記録できます。
これを行う方法はありますか?
はいあります。これは、JAX-WS ハンドラーの主な目的の 1 つです。XML ペイロードを raw バイトとして取得するのではなく、フォーマットします。ただし、必要に応じて、簡単に生のバイトに戻すことができます。例:
public class MyCustomHandler implements SOAPHandler<SOAPMessageContext> {
@Override
public boolean handleMessage(SOAPMessageContext context) {
SOAPMessage msg = context.getMessage();
SOAPEnvelope env = msg.getSOAPPart().getEnvelope();
SOAPBody body = env.getBody();
// now when you have SOAP body you can do whatever you want...
return true;
}
}
次の呼び出しも使用できます。
JAXBContext jaxbContext = JAXBContext.newInstance(ObjectFactory.class);
Object payload = msg.getPayload(jaxbContext);
参考文献: