Apache CXF 打印自定义 SOAPEnvelope

Apache CXF print customized SOAPEnvelope

我们正在通过 TomEE Plus 上的网络应用程序 运行 使用 JAX-WS 网络服务。它使用 Apache CXF 实现与网络服务交互。

我们想要记录作为网络服务调用的一部分发送和接收的请求和响应 XML。有很多例子可以帮助我们记录 complete 请求和响应,为什么我们使用 Apache CXF.

但是,我们遇到了不应该记录完整请求 XML 的情况,因为其中包含一些敏感信息。我们正在修改 SOAPEnvelope 以删除 SOAPHandler 中负责记录它们的敏感信息。

要进行打印,是否有任何库可以帮助我们打印完整的 XML 数据?

在 IBM WebSphere 中,JAX-WS 实现(不确定它是哪一个)可以仅通过使用 toString() 方法打印 SOAPEnvelope。在尝试 SOAPEnvelopetoString() 时,CXF returns null 在哪里。

                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());

基于 this post

的回答