【问题标题】:How to show the soap calls log in spring boot app running in tomcat如何在tomcat中运行的spring boot应用程序中显示soap调用日志
【发布时间】:2018-04-04 22:35:12
【问题描述】:

我有一个 Spring Boot 应用程序,

  • 打包为war文件
  • 部署在 tomcat 9.x 中
  • 网络应用正在使用 SOAP 调用第三方网络服务。

我的问题是如何在 Tomcat 容器中专门显示 SOAP 日志,因为我可以在应用程序的 main 方法中使用以下代码在 Spring boot 中显示日志

 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

发生的事情是第三方以 invalid name space error

响应

【问题讨论】:

    标签: java spring tomcat spring-boot soap


    【解决方案1】:

    经过长时间的调查,我找到了以下简单的解决方案:

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

      CATALINA_OPTS="-Dcom.sun.xml.ws.transport.http.client.HttpTransportPipe.dump=true -Dcom.sun.xml.internal.ws.transport.http.client.HttpTransportPipe.dump=真-Dcom.sun.xml.ws.transport.http.HttpAdapter.dump=真-Dcom.sun.xml.internal.ws.transport.http.HttpAdapter.dump=真-Dcom.sun.xml.internal.ws。 transport.http.HttpAdapter.dump=true -Dcom.sun.xml.internal.ws.transport.http.HttpAdapter.dumpTreshold=999999"

    3. 重启你的tomcat服务器

    4. 从网络应用调用网络服务,你会发现所有的soap请求都被完全记录了

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

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

    【讨论】:

      猜你喜欢
      • 2016-04-27
      • 1970-01-01
      • 2019-11-20
      • 2022-06-17
      • 2020-04-30
      • 1970-01-01
      • 2018-05-13
      • 2018-06-05
      • 1970-01-01
      相关资源
      最近更新 更多