我有一个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类进行任何代码更改才能实现此目的?
感谢您的帮助。
答案 0 :(得分: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标头打印到控制台。