1

我有一个 Web 服务客户端类,它使用 wsdl url 与目标服务器建立连接。此类使用 JaxWsProxyFactoryBean 和 WSS4JOutInterceptor 建立安全连接。我想查看我的代码生成的 SOAP 请求和服务器生成的响应。

当我从命令行运行我的 jar 时,我尝试包含以下选项

-Dcom.sun.xml.ws.transport.http.client.HttpTransportPipe.dump=true
-Dcom.sun.xml.internal.ws.transport.http.client.HttpTransportPipe.dump=true
-Dcom.sun.xml.ws.transport.http.HttpAdapter.dump=true
-Dcom.sun.xml.internal.ws.transport.http.HttpAdapter.dump=true 

我正在使用 log4j 进行日志记录,所有消息都写入自定义文件。如何使用命令行选项将 SOAP 请求/响应转储到同一文件?

我是否必须对 Client 类进行任何代码更改才能实现这一点?

谢谢您的帮助。

4

1 回答 1

1

我必须将以下行添加到创建 SOAP 请求的类中:

LoggingInInterceptor loggingInInterceptor = new LoggingInInterceptor();
loggingInInterceptor.setPrettyLogging(true);
LoggingOutInterceptor loggingOutInterceptor = new LoggingOutInterceptor();
loggingOutInterceptor.setPrettyLogging(true);
factory.getInInterceptors().add(loggingInInterceptor);
factory.getOutInterceptors().add(loggingOutInterceptor);

我还必须将我的 cxf 客户端更新到 Apache 的最新版本,即 2.7.12。这会将 SOAP 标头打印到控制台。

于 2014-09-04T15:13:44.383 回答