private void logMessage(SOAPMessageContext ctx) { String action = getWsaHeader(ctx, "Action", "noAction"); FileOutputStream out = null; try { String msgID = ((Boolean)ctx.get(MessageContext.MESSAGE_OUTBOUND_PROPERTY)) ? getWsaHeader(ctx, "MessageID", null) : getWsaHeader(ctx, "RelatesTo", null); File f = getLogFile(action, msgID); if (f != null) { f.getParentFile().mkdirs(); log.info("sent SOAP message saved to file "+f); out = new FileOutputStream(f); Source s = ctx.getMessage().getSOAPPart().getContent(); Transformer t = TransformerFactory.newInstance().newTransformer(); t.setOutputProperty("indent", "yes"); t.transform(s, new StreamResult(out)); } } catch (Exception x) { log.error("Error logging sent SOAP message to file!", x); } finally { if (out != null) try { out.close(); } catch (IOException ignore) {} } }