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
。在尝试 SOAPEnvelope
的 toString()
时,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
的回答
我们正在通过 TomEE Plus 上的网络应用程序 运行 使用 JAX-WS
网络服务。它使用 Apache CXF
实现与网络服务交互。
我们想要记录作为网络服务调用的一部分发送和接收的请求和响应 XML。有很多例子可以帮助我们记录 complete 请求和响应,为什么我们使用 Apache CXF
.
但是,我们遇到了不应该记录完整请求 XML 的情况,因为其中包含一些敏感信息。我们正在修改 SOAPEnvelope
以删除 SOAPHandler
中负责记录它们的敏感信息。
要进行打印,是否有任何库可以帮助我们打印完整的 XML 数据?
在 IBM WebSphere 中,JAX-WS 实现(不确定它是哪一个)可以仅通过使用 toString()
方法打印 SOAPEnvelope
。在尝试 SOAPEnvelope
的 toString()
时,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
的回答