如何在SOAP服务中为特定方法分配CXF登录?

时间:2018-09-07 12:51:01

标签: java logging soap cxf cxf-client

我有CXF Soap客户服务:

  @Bean(name = "SomeMessageExchangeClient")
  public SomeMessageExchangePortType signingPortType() {
    JaxWsProxyFactoryBean jaxWsProxyFactoryBean = new JaxWsProxyFactoryBean();
    jaxWsProxyFactoryBean.setServiceClass(SomeMessageExchangePortType.class);
    jaxWsProxyFactoryBean.setAddress(someServerUrl);
    jaxWsProxyFactoryBean.getInInterceptors().add(new LoggingInInterceptor());
    jaxWsProxyFactoryBean.getOutInterceptors().add(new LoggingOutInterceptor());
    jaxWsProxyFactoryBean.getOutInterceptors().add(new FaultOutInterceptor());
    jaxWsProxyFactoryBean.getOutInterceptors().add(new FaultOutInterceptor());

    return (SomeMessageExchangePortType) jaxWsProxyFactoryBean.create();
  }

我添加进出拦截器,它可以正常工作。但是现在我需要禁用一些日志。

我可以在日志中禁用-删除LoggingInInterceptor 我可以禁用日志-删除LoggingOutInterceptor

我可以在logback.xml中更改日志级别:

 <logger name="org.apache.cxf.services.SomeMessageExchangeClient.REQ_IN" level="ERROR" />
  <logger name="org.apache.cxf.services.SomeMessageExchangeClient.RESP_IN" level="ERROR" />

  <logger name="org.apache.cxf.services.SomeMessageExchangeClient.REQ_OUT" level="INFO" />-->
  <logger name="org.apache.cxf.services.SomeMessageExchangeClient.RESP_OUT" level="INFO" />

但是所有这些操作都会更改所有 IN OUT 日志。对于我的SOAP服务中的特定方法,我只需要禁用 OUT 日志。 SomeMessageExchangeClient例如有2种方法:

FirstResponse sendFirstRequest(FirstRequest firstRequest){}
SecondResponse sendSecondRequest(SecondRequest secondRequest){}

我只需要为sendFirstRequest和OUT日志禁用日志。

是否可以这样做?如果可以,怎么办?

0 个答案:

没有答案