0
我在我的项目中使用JAX-WS作为webservices。我想记录这些Web服务的每个请求和响应。目前,我正在成功记录每个请求/响应,但是为了安全起见,我希望删除标题部分,并保留正文,我在我的SOAPHandler中使用此方法在应用程序日志中写入:仅记录肥皂请求和响应主体Jax WS
private void logToSystemOut(SOAPMessageContext smc) {
Logger logger = Logger.getLogger(LogHandler.class);
Boolean outboundProperty = (Boolean) smc
.get(MessageContext.MESSAGE_OUTBOUND_PROPERTY);
if (outboundProperty.booleanValue()) {
logger.info("Outbound message:");
} else {
logger.info("Inbound message:");
}
SOAPMessage message = smc.getMessage();
try {
Source source = message.getSOAPPart().getContent();
ByteArrayOutputStream baos = new ByteArrayOutputStream();
Transformer transformer = TransformerFactory.newInstance()
.newTransformer();
transformer.setOutputProperty(OutputKeys.INDENT, "yes");
transformer.setOutputProperty(
"{http://xml.apache.org/xslt}indent-amount", "3");
transformer.transform(source, new StreamResult(baos));
logger.info(baos.toString());
} catch (Exception e) {
logger.warn("Exception in handler: " + e);
}
}
这当然会记录每个请求/响应,而不区分标题和正文。我尝试使用message.getSOAPBody(),但它保持记录为空。
所有的建议都欢迎。
PS:这是针对message.getSOAPBody()的返回是[S:主体:空]