Apache CXF печать настроенный SOAPEnvelope - PullRequest
0 голосов
/ 11 июня 2018

Мы используем веб-службу JAX-WS через наше веб-приложение, работающее на TomEE Plus.Он использует реализацию Apache CXF для взаимодействия с веб-сервисом.

Мы хотели регистрировать XML-запросы и ответы, которые отправляются и принимаются как часть вызовов веб-сервиса.Существует множество примеров того, что помогает нам регистрировать запрос complete и ответ, почему мы используем Apache CXF.

Однако у нас есть ситуация, когда полный запрос XML не должен регистрироватьсятак как в этом есть некоторая конфиденциальная информация.Мы модифицируем SOAPEnvelope, чтобы удалить конфиденциальную информацию в SOAPHandler, которая заботится о ее регистрации.

Для печати доступны ли какие-либо библиотеки, которые помогут нам распечатать полные данные XML?

В IBM WebSphere реализация JAX-WS (не уверенная, какая это была) могла печатать SOAPEnvelope, просто используя метод toString().Где, когда CXF возвращает null при попытке toString() из SOAPEnvelope.

1 Ответ

0 голосов
/ 14 июня 2018
                SOAPMessage message = messageContext.getMessage();
                StringWriter sw = new StringWriter();
                Transformer transformer = transformerFactory.newInstance().newTransformer();
                transformer.setOutputProperty(OutputKeys.INDENT, "yes");
                transformer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "2");
                transformer.transform(new DOMSource(message.getSOAPPart()), new StreamResult(sw));
                logger.info(sw.toString());

На основании ответов этого поста

...