将日志记录添加到 soap web 服务

Adding logging to soap web service

我想记录我的请求和响应。 通过更改此处推荐的属性,我找到了一个非常简单的解决方案: Tracing XML request/responses with JAX-WS

我的问题是,我不想记录凭据,所以我需要手动调整日志消息。

我是肥皂的新手,所以我一点经验都没有。

我使用 gradle 插件创建 java 类 我的 WSDL:https://plugins.gradle.org/plugin/no.nils.wsdl2java

我创建服务的代码:

import javax.xml.namespace.QName
import javax.xml.ws.Service
[...]

private MYSoapWsdlClass createClient(String url) {

    URL serverEndpoint = new URL(url)
    QName SERVICE_NAME = new QName("DOC_URL", "SERVICE_NAME")
    Service service = Service.create(serverEndpoint, SERVICE_NAME)
    return service.getPort(MYSoapWsdlClass.class)
}

那么我怎样才能在此处获取日志记录处理程序? 或者是否有另一种使用 wsdl 实例化我的服务的简单方法? 通常我使用 groovy,但找不到 wsdl2groovy 插件。

非常感谢

我们现在使用org.apache.cxf

一开始想起来有点棘手,但后来它确实提供了一种非常好的添加功能的方法 - 包括日志记录功能。

服务是在 spring 配置中创建的:

  public static final LoggingFeature LOGGING_FEATURE = new LoggingFeature(outSender: new CustomEventOutSender(),
                                                                      inSender: new CustomEventInSender(),
                                                                      limit: -1)

@Bean
MYSoapWsdlClass mYSoapWsdlClass() {
    JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean(serviceClass: MYSoapWsdlClass.class,
                                                          address: url,
                                                          features: [LOGGING_FEATURE]
    )
    return factory.create()
}