2017-06-20 10 views
0

カスタムLoggingInInceptceptorを作成しようとしていますが、カスタムパートにコードがまったく入っていません。サンプルSOP @@@@@@@@ handleMessageも印刷されません。Apacheを使用していますSOAPサービスを消費するSpringBootアプリケーションを使用しているCFX。ロガーのリクエストと応答をカスタマイズしようとしました。問題を見つけるのを助けてください。Apache CFXカスタムLoggingInInceptceptorがオーバーライドされていません

カスタムインターセプタ:

@Component 
public class CustomLoggingInterceptor extends LoggingInInterceptor{  

    @Override 
    public void handleMessage(Message message) throws Fault { 
     System.out.println("@@@@@@@@handleMessage"+this.getClass().getName()); 
     Logger logger = getCustomMessageLogger(message); 
     if (logger != null && (writer != null || logger.isLoggable(Level.INFO))) { 
      logging(logger, message); 
     } 
    } 

     Logger getCustomMessageLogger(Message message) { 
     if (isLoggingDisabledNow(message)) { 
      return null; 
     } 
     Endpoint ep = message.getExchange().getEndpoint(); 
     if (ep == null || ep.getEndpointInfo() == null) { 
      return getLogger(); 
     } 
     EndpointInfo endpoint = ep.getEndpointInfo(); 
     if (endpoint.getService() == null) { 
      return getLogger(); 
     } 
     Logger logger = endpoint.getProperty("MessageLogger", Logger.class); 
     if (logger == null) { 
      String logName = "org.apache.cxf.services." ; 
      logger = LogUtils.getL7dLogger(this.getClass(), null, logName); 
      endpoint.setProperty("MessageLogger", logger); 
     } 
     return logger; 
    } 
} 

サービスコール: - 私の問題は、以下のように解決されLoggingOutInterceptorをカスタマイズして

UserService service = getUserServiceForEndpoint("URL"); 
    Client client = ClientProxy.getClient(service); 
    Endpoint endpoint = client.getEndpoint(); 

    endpoint.getOutInterceptors().add(wssOutInterceptor); 
    endpoint.getOutInterceptors().add(loggingOutInterceptor); 
    endpoint.getOutFaultInterceptors().add(loggingOutInterceptor); 

    endpoint.getInInterceptors().add(customLoggingInterceptor); 
    endpoint.getInFaultInterceptors().add(customLoggingInterceptor); 

答えて

0

@Component 
public class CredentialMaskingLoggingOutInterceptor extends LoggingOutInterceptor{ 

    @Autowired 
    ApplicationProperties appProps; 

    /** 
    * To mask user credentials from the logging so that which will not be misused. 
    */ 
    @Override 
    protected String formatLoggingMessage(LoggingMessage buffer) { 
     return buffer.toString().replace(appProps.getUsername(), "SOAP_USERNAME").replace(appProps.getPassword(), "SOAP_PASSWORD"); 
    } 
} 

更新されたログスニペット:

<wsse:UsernameToken wsu:Id="UsernameToken"><wsse:Username>SOAP_USERNAME</wsse:Username><wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">SOAP_PASSWORD</wsse:Password></wsse:UsernameToken> 
関連する問題