* @param context the message context
* @see #getServiceLogger
*/
public void handleRequest(final SOAPMessageContext context) {
// logging
final ADFLogger logger = getServiceLogger(context);
if (logger.isLoggable(LOG_LEVEL)) {
logger.log(LOG_LEVEL, "invoking {0} at {1}", new Object[] {
fullOperationName(context), context.get(BindingProvider.ENDPOINT_ADDRESS_PROPERTY) });
final String payload = prettyXml(context.getMessage());
logger.log(LOG_LEVEL, "request payload\n{0}", payload);
// start performance timer with all details (can be viewed in FMW Control)
final HashMap<String, String> logContext = new HashMap<String, String>();
logContext.put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY,
String.valueOf(context.get(BindingProvider.ENDPOINT_ADDRESS_PROPERTY)));
logContext.put(MessageContext.WSDL_INTERFACE, String.valueOf(context.get(MessageContext.WSDL_INTERFACE)));
logContext.put(MessageContext.WSDL_OPERATION, String.valueOf(context.get(MessageContext.WSDL_OPERATION)));
logContext.put(MessageContext.WSDL_PORT, String.valueOf(context.get(MessageContext.WSDL_PORT)));
logContext.put(MessageContext.WSDL_SERVICE, String.valueOf(context.get(MessageContext.WSDL_SERVICE)));
logger.begin(perfTimerName(context), logContext);
} else {
// start performance timer even when not logging payload
logger.begin(perfTimerName(context), new HashMap<String, String>());
}
// keep request for handleFault and starting time
context.put(KEY_REQUEST, context.getMessage());
context.put(KEY_START_TIME, System.nanoTime());