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:主體:空]