我有一个Spring Boot应用程序,


打包为战争文件
部署在tomcat 9.x中
该Web应用程序正在使用SOAP调用第三方Web服务。


我的问题是如何特别在Tomcat容器中显示SOAP日志,因为我可以使用Application的main方法中的以下代码在Spring启动中显示日志

 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");
    System.setProperty("com.sun.xml.internal.ws.transport.http.HttpAdapter.dump", "true");
    System.setProperty("com.sun.xml.internal.ws.transport.http.HttpAdapter.dumpTreshold", "999999");


但这在tomcat服务器中不起作用。
我发现以下帖子可以构建一个Soap Handler来记录请求:

https://stackoverflow.com/a/27468517/716865

发生了什么事,第三部分响应了无效的名称空间错误

最佳答案

经过长期调查,我发现以下简单解决方案:


编辑您的catalina.sh/catalina.bat文件,该文件可以在您的tomcat安装中找到
添加以下行或将其追加到CATALINA_OPTS:

CATALINA_OPTS =“-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 -Dcom.sun.xml.internal.ws.transport.http.HttpAdapter。 dump = true -Dcom.sun.xml.internal.ws.transport.http.HttpAdapter.dumpTreshold = 999999“
重新启动tomcat服务器
从Web应用程序调用Web服务,您将发现所有肥皂请求已完全记录



  请注意,如果Soap请求/响应包含敏感数据,这可能会导致安全问题。


我相信可能有比我更好的解决方案,但这对我来说非常理想,而无需添加任何额外的代码。

10-04 17:19