java - 无法记录 JaxWs 客户端 xml 消息

标签 java soap jax-ws

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

我想跟踪客户端发送/接收的 XML 消息,但我找不到有效的解决方案...

我尝试使用 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. 在项目资源管理器中选择您的项目并右键单击它。
  2. 在“运行方式”下,点击“运行配置”
  3. 您的应用程序应该已显示为 Jetty Web 应用程序,并且项目名称将列在 Jetty Web 应用程序下方。在参数选项卡上,将以下内容添加到 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 项目进行测试的,该项目有一个 Servlet,该 Servlet 在加载 Servlet 时调用 Web 服务。

设置屏幕截图: enter image description here

关于java - 无法记录 JaxWs 客户端 xml 消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50048190/

相关文章:

c# - 在 SOAP XML 中编码 char 类型元素

jax-ws - Jax Ws 客户端出现意外的 XML 标记问题

java - 如何使用 JAXWS 和 APT 自定义日期/时间绑定(bind)?

java - 如果 JAXWS 出现异常,如何发送自定义响应消息而不是故障消息?

java - 使用 Sun 的专有 Java 类是一种不好的做法吗?

rest - Salesforce SOAP SessionId 作为 REST token

java - eclipse.ini 非标准选项

java - 未经授权的 Rovi TV Listings Service Soap 1.2

java - 使用 Java 8 中的方法引用获取 Collectors toMap 方法中的流对象

java - Spring - Spring-WS,带有带有附件的 SOAP 或带有 JAXB 的 MTOM 作为数据绑定(bind)器