无法记录 JaxWs 客户端 xml 消息

Cannot log JaxWs client xml messages

我使用 wsimport(版本“2.2.9”)从 WSDL 生成了一个 SOAP 客户端,我在 Java 8 应用程序中使用它。

我想跟踪客户端 XML 消息 sent/received 但我找不到有效的解决方案...

我试过这样使用 this approach

public class TestClass {
    public static void main(String[] args) {
        System.setProperty("com.sun.xml.ws.transport.http.client.HttpTransportPipe.dump", "true");
        System.setProperty("com.sun.xml.ws.transport.http.HttpAdapter.dump", "true");
        System.setProperty("com.sun.xml.internal.ws.transport.http.client.HttpTransportPipe.dump", "true");
        System.setProperty("com.sun.xml.internal.ws.transport.http.HttpAdapter.dump", "true");


        WSService wsService = new WSService();
        WSSoap soapService = wsService.getWSSoap();
        ServiceResponse response = soapService.callServiceMethod();
    }
}

请求已正确执行,但我在标准输出上找不到任何 XML 跟踪。这段代码有什么问题?

要在 eclipse 上调试 jetty 中的 soap 请求和响应,您可以执行以下操作。

  1. Select 您在项目资源管理器中的项目并右键单击它。
  2. 在 运行 作为下,单击 运行 配置
  3. 您的应用程序应该已经显示为 Jetty Webapp,并且项目名称将列在 Jetty Webapp 下方。在参数选项卡上,将以下内容添加到 JVM 参数部分
    -Dcom.sun.xml.ws.transport.http.client.HttpTransportPipe.dump=true
    -Dcom.sun.xml.ws.transport.http.HttpAdapter.dump=true
    -Dcom.sun.xml.internal.ws.transport.http.client.HttpTransportPipe.dump=true
    -Dcom.sun.xml.internal.ws.transport.http.HttpAdapter.dump=true
  4. 单击 运行,您的应用程序现在与 Web 服务进行的任何交互都将被记录

这是用一个动态 Web 项目测试的,该项目有一个 servlet,它在加载 servlet 时调用 Web 服务。

设置的屏幕截图: