запись запроса и ответа мыла в одну и ту же запись базы данных - PullRequest
0 голосов
/ 20 сентября 2019

Я пытаюсь добавить запрос мыла и ответ в базу данных с помощью пользовательских LoggingInInterceptors.С перехватчиками входа и выхода запрос и ответ регистрируются в 2 разных строках.Но мне нужно войти в одну запись.

Есть ли возможность записать и запрос, и ответ в одну строку?

Ниже добавлено 2 перехватчика для ввода и вывода и обработки запроса и ответаи вставка в БД.Благодаря этому он вставляется в 2 ряда.Существует ли какой-либо механизм для передачи данных запроса на выходные перехватчики, чтобы оба они могли одновременно регистрироваться в одной записи.

class LogOutInterceptor extends LoggingOutInterceptor{
    public LogOutInterceptor() {
        super(Phase.PRE_STREAM)
    }

    @Override
    public void handleMessage(Message message) throws Fault {
        OutputStream out = message.getContent(OutputStream.class)
        final CacheAndWriteOutputStream newOut = new CacheAndWriteOutputStream(out)
        message.setContent(OutputStream.class, newOut)
        newOut.registerCallback(new LoggingCallback())
    }

    public class LoggingCallback implements CachedOutputStreamCallback {
        public void onFlush(CachedOutputStream cos) {
        }

        public void onClose(CachedOutputStream cos) {
            try {
                StringBuilder builder = new StringBuilder()
                cos.writeCacheTo(builder, -1)
                String request = builder.toString()
                // adding request into DB
            } catch (Exception e) {
                e.printStackTrace()
            }
        }
    }

    class LogInInterceptor extends LoggingInInterceptor {
        public LogInInterceptor() {
            super()
        }

        @Override
        protected String formatLoggingMessage(LoggingMessage loggingMessage) {
            String soapXmlPayload = loggingMessage.getPayload() != null ? loggingMessage.getPayload().toString() : null
            // adding response into DB
            return super.formatLoggingMessage(loggingMessage)
        }
    }
}
...