Ведение журнала веб-службы Soap - PullRequest
0 голосов
/ 30 августа 2018

У меня есть Spring WebService для отправки и получения SOAP. Это пример класса Impl:

 @Override
 @LoggingRequest(serviceName = "test")
 public String getReport(String url, GetReport getReport, CigWsHeader cigWsHeader) {
     AtomicReference<String> responseStr = new AtomicReference<>();
     webServiceTemplateMbki.sendAndReceive(url,
             (request) -> {
                 SoapMessage soapMessage = (SoapMessage) request;
                 soapMessage.setSoapAction("http://test");

                 addAuthHeader(cigWsHeader, soapMessage);

                 String body = toXmlString(objectFactory.createGetReport(getReport));
                 Transformer transformer = TransformerFactory.newInstance().newTransformer();
                 transformer.transform(new StringSource(body), request.getPayloadResult());

                 SoapEnvelope envelope = soapMessage.getEnvelope();
                 envelope.addNamespaceDeclaration("ws", "http://test/");

             }, (response) -> {
                 ByteArrayOutputStream out = new ByteArrayOutputStream();
                 response.writeTo(out);
                 String s = new String(out.toByteArray());
                 responseStr.set(s);
             });
     return handleGetReportResponse(responseStr.get());
 }

И у меня также есть аспект, в котором я хочу войти в эту службу:

@Around("@annotation(com.datastech.cra.aop.annotation.LoggingRequest)")
public Object loggingRequestToExternalServices(ProceedingJoinPoint pjp) throws Throwable {
    log.info("Logging external service");
    MethodSignature signature = (MethodSignature) pjp.getSignature();
    Method method = signature.getMethod();
    ElasticLogDTO elasticLogDTO = new ElasticLogDTO();
    elasticLogDTO.setTimeStamp(new Date());
    elasticLogDTO.setMetricValue(System.nanoTime());
    elasticLogDTO.setType(Type.BUSINESS.name());
    elasticLogDTO.setLevel(Level.INFO.name());
    elasticLogDTO.setModule(Module.CLIENT.name());
}

Я нашел ClientInterceptor, но не знаю, как связать его с AOP. Как мне войти в систему с помощью запроса AOP и ответа службы SOAP?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...