@Override
  public boolean handleRequest(MessageContext context) {

    logger.debug("JaxRpcLogContextServerHandler.handleRequest()");

    String soapMessageString = getSOAPMessageString(context);

    SOAPMessageContext soapContext = (SOAPMessageContext) context;
    SOAPMessage message = soapContext.getMessage();

    PerfLogContextTrackingData perfLogContextTrackingData;

    perfLogContextTrackingData = retrieveLogContextFromSOAPHeader(context);

    // create a thread context
    logger.debug(
        "JaxRpcLogContextServerHandler: guid = "
            + perfLogContextTrackingData.getGuid()
            + " sessionId="
            + perfLogContextTrackingData.getSessionId()
            + " callingJVMHostId="
            + perfLogContextTrackingData.getCallingJvmHostId()
            + " callingJVMCloneId="
            + perfLogContextTrackingData.getCallingJvmCloneId()
            + " callingJVMDepth="
            + perfLogContextTrackingData.getCallingJvmDepthStr()
            + " userId="
            + perfLogContextTrackingData.getUserId()
            + " createTime="
            + perfLogContextTrackingData.getCreateTimeInMillisStr());
    createPerfLogContextForWSRequest(context, message, perfLogContextTrackingData);
    if (LoggerProperties.getInstance().isPerfLogWSCacheSOAPMessage())
      addSOAPMessageStringToPerfLogContextRequestData("JaxRpcServerSOAPRequest", soapMessageString);

    // track elapsed time for this web service...
    context.setProperty(
        ContextHandlerConstants.PROPERTY_NAME_startTime, new Long(System.currentTimeMillis()));
    return super.handleRequest(context);
  }
 @Override
 public boolean handleFault(MessageContext msgContext) {
   String faultMessage = null;
   try {
     faultMessage = getSOAPMessageString(msgContext);
     if (logger.getDebugEnabled()) logger.debug("handleFault: " + faultMessage);
     msgContext.setProperty(ContextHandlerConstants.PROPERTY_NAME_FAULT, new Boolean(true));
     return super.handleFault(msgContext);
   } finally {
     PerfLogContext perfLogContext = PerfLogContextHelper.getCurrentThreadPerfLogContextObject();
     long elapsedTime = getElapsedTime(msgContext);
     PerfLogContextHelper.compensateForOutboundJvmCallExceptionIfAny();
     if (LoggerProperties.getInstance().isPerfLogWSEnabled()
         && (elapsedTime >= LoggerProperties.getInstance().getPerfLogWSThreshold()))
       logPerfMetrics(
           msgContext,
           elapsedTime,
           perfLogContext,
           new Exception("JaxRpcLogContextServerHandler:handleFault"),
           faultMessage);
     PerfLogContextHelper.endPerfLogTxnMonitor();
   }
 }