【问题标题】:Writing SOAP request/responses to a log file将 SOAP 请求/响应写入日志文件
【发布时间】:2014-08-25 15:38:16
【问题描述】:

我有一个 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 类进行任何代码更改才能实现此目的?

感谢您的帮助。

【问题讨论】:

  • 是的,我先检查了该帖子并尝试了 Mr.Napik 的回答。除非这是实现此目的的唯一方法,否则我不会更改代码。
  • 还有一个 JVM 标志。它在 Ajay 引用的同一个问题中

标签: java web-services wsdl jax-ws wss4j


【解决方案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 标头打印到控制台。

【讨论】:

    猜你喜欢
    • 2012-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多