JAX-WS SOAP Handler
I stumbled on this article where Rob Flynn describes a technique to handle SOAP requests from a central point using the bowstreet.serviceCall.jaxwsHandler override. I used this approach to add some log4j logging statements, this way I don't have to go into each builder and tweak the input and redeploy, I can just change the log4j.properties. Unbelievably, a google search shows that there are no other references to this override - not even in IBM's documentation. I have to wonder how many other awesome WEF features lay undocumented (ask me about pageprocessors.properties).
public class SoapHandler extends BaseJaxWsHandler { static Logger logger = Logger.getLogger(SoapHandler.class); /* * Populate the user's identity into the SOAP request. */ public boolean handleOutboundMessage(SOAPMessageContext context) { // bail if logging not enabled if (!logger.isInfoEnabled()) return;
logMessage(context); return true; } /** * Log the SOAP message. * @param context */ private void logMessage(SOAPMessageContext context) { // bail if logging not enabled if (!logger.isInfoEnabled()) return; try { HashMap hm = (HashMap) context.get(com.ibm.websphere.webservices.Constants.REQUEST_TRANSPORT_PROPERTIES); Set keys = hm.keySet(); logger.info(">> Start SOAP message log"); logger.info("calling Model=" + getWebappAccess().getModelName()); logger.info(this.getEndPointUrl(context)); for (Object key : keys){ logger.info("HTTP header -> " + key + "=" + hm.get(key)); } logger.info(context.getMessage().getSOAPPart().getEnvelope()); logger.info(">> End SOAP message log\n"); } catch (SOAPException e) { // we're just logging, not sure we care that an exception is thrown } } }The parent class BaseJaxWsHandler can be found on Rob's entry mentioned above.
0 comments:
Post a Comment
Are you about to post a generic comment that has nothing to do with this post? Something like "Hey thanks for this very valuable information, BTW here's my website". If so, it will be marked as spam and deleted within 24 hours.
Note: Only a member of this blog may post a comment.