Java 如何跟踪webServiceTemplate发送的SOAP请求

Java 如何跟踪webServiceTemplate发送的SOAP请求,java,eclipse,spring,soap,tcp,Java,Eclipse,Spring,Soap,Tcp,我知道可以使用EclipseTCP/IP监控来跟踪SOAP消息。我试过了,但它无法监视我的本地主机。TCP/IP在其控制台中不显示本地主机 我可以通过http://localhost:8080/MyApp/ 在TCP/IP配置中,我有以下几点 Local monitoring port 9090 (a random port that I have chosen) Host name: localhost Port: 8080 Type: TCP/IP Timeout:0 有没有办法解决TCP

我知道可以使用EclipseTCP/IP监控来跟踪SOAP消息。我试过了,但它无法监视我的本地主机。TCP/IP在其控制台中不显示本地主机

我可以通过
http://localhost:8080/MyApp/
在TCP/IP配置中,我有以下几点

Local monitoring port 9090 (a random port that I have chosen)
Host name: localhost
Port: 8080
Type: TCP/IP
Timeout:0

有没有办法解决TCP/IP问题或找到其他软件?

也许您更愿意启用内置的Spring日志,而不是使用Eclipse TCP/IP监控?在这种情况下,您可以在
调试
跟踪
级别为

  • org.springframework.ws.client.MessageTracing
    如果您想登录客户端
  • org.springframework.ws.server.MessageTracing
    如果要登录到服务器级别
DEBUG
级别,只记录有效负载根元素;在
跟踪
级别上,显示整个消息内容。有关详细信息和Log4J配置示例,请参阅

或者,您可以配置
PayloadLoggingInterceptor
SoapEnvelopeLoggingInterceptor
。在
beans.xml
中,您可以这样做:

<sws:interceptors>
    <bean class="org.springframework.ws.server.endpoint.interceptor.PayloadLoggingInterceptor"/>
</sws:interceptors>

关于该解决方案的更多信息(第5.5.2.1节)


请注意,Spring使用Commons Logging facade进行日志记录,因此您需要一个实际的日志框架来查看日志,例如Log4J。

通过启用以下系统属性,可以从客户端记录SOAP消息:

System.setProperty("com.sun.xml.ws.transport.http.client.HttpTransportPipe.dump", "true");
System.setProperty("com.sun.xml.internal.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.HttpAdapter.dump", "true");
参考:

编辑:是这方面最全面的软件之一(但有点复杂)

我使用了Fiddler和Charlesproxy,用于相同的功能——WebVCS、Rest和SOAP(在Eclipse工具中惨败之后)。它们都比eclipse优越得多,并且非常易于使用

这是你设置小提琴手的方法-

  • 下载并启动fiddler
  • 在Eclipse首选项中添加以下VM选项

    DproxySet=true-Dhttp.proxyHost=127.0.0.1-Dhttp.proxyPort=8888

  • 或者,您也可以通过编程进行设置

    System.setProperty(“http.proxyHost”、“127.0.0.1”);
    System.setProperty(“https.proxyHost”、“127.0.0.1”);
    set属性(“http.proxyPort”、“8888”);
    System.setProperty(“https.proxyPort”、“8888”)

  • 重新启动您的应用程序。(我从来不需要重新启动eclipse本身,但eclipse有时有自己的想法)

  • 就是这样,这是最常见和最基本的设置,对我处理过的90%的用例都有用。 注意:Fiddler默认在8888端口上侦听

    如果您的服务器使用SSL/certs,则还有进一步的设置。 这里是完整的链接

    注意:如果您被卡住,即使在这些设置中的stackoverflow上也有很多内容


    此外,Charlesproxy也非常好,但我个人使用fiddler主要用于Webservice客户端开发。

    您可以使用启用环回的wireshark并添加http作为过滤器。这将符合您的目的

    org.springframework.ws.client.MessageTracing
    设置跟踪级别日志记录。我会选择Wireshark,因为它是调试SOAP的绝对难以置信的工具。您捕获数据包,在筛选器字段中键入
    http
    ,以仅显示http请求/响应(您可以指定src或dst以及大量选项)-右键单击列表项->“跟随TCP流”。或者使用其中一个插件。我使用了wireshark,但它显示的HTTP消息太多了。我知道,这就是为什么我不建议将其作为首选。但是它非常强大,一旦你掌握了它,你可能就不需要任何其他工具了。你试过小提琴吗?