0

Apache Tomcat で実行される Web サービス クライアントを作成しています。ログに記録できるように、要求/応答の XML ペイロードを取得する必要があります。

バイトを stdOut にダンプすることは、私が望むものではありません。Javaコードでバイトとして取得したいので、好きなようにログに記録できます。

これを行う方法はありますか?

4

1 に答える 1

1

はいあります。これは、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);

参考文献:

于 2013-10-10T13:19:06.873 に答える