package com.custom.axis.loggers;
import org.apache.axis2.AxisFault;
import org.apache.axis2.context.MessageContext;
import org.apache.axis2.description.AxisService;
import org.apache.axis2.description.Parameter;
import org.apache.axis2.handlers.AbstractHandler;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.synapse.SynapseConstants;
/*
* This class differentiate's the Proxy Service / API / Admin Service Calls.
*
*/
public class CustomLoggingHandler extends AbstractHandler {
private static final Log log = LogFactory
.getLog(CustomLoggingHandler.class);
public InvocationResponse invoke(MessageContext msgContext)
throws AxisFault {
log.debug("----------------------CustomLoggingHandler Invoked----------------------");
AxisService axisService = msgContext.getAxisService();
if (isProxyService(msgContext, axisService)) { // For Proxy Services checking the ServiceType Parameter
if (log.isDebugEnabled()) {
log.debug("Is a proxy service.");
}
} else { // For APIs/Main Sequence and Admin Services
if (axisService.getAxisServiceGroup().getServiceGroupName()
.equals(SynapseConstants.SYNAPSE_SERVICE_NAME)) { //For APIs and main sequence
if (log.isDebugEnabled()) {
log.debug("Is a API.");
}
} else { // For Admin Services
if (log.isDebugEnabled()) {
log.debug("Is a Admin Service.");
}
}
}
return InvocationResponse.CONTINUE;
}
// Method to check whether request is for Proxy Service.
public static boolean isProxyService(MessageContext messageContext,
AxisService axisService) {
if (axisService != null) {
Parameter val = axisService.getParameter("serviceType");
if (val != null
&& val.getValue().toString().equalsIgnoreCase("Proxy")) {
if (log.isDebugEnabled()) {
log.debug("Parameter Value Service Type: "
+ val.getValue().toString());
}
return true;
}
}
return false;
}
[1] http://ajanthane.blogspot.com/2015/12/creating-axis2-module-for-custom.html
[2] http://ajanthane.blogspot.com/2015/10/creating-custom-axis2-handler.html
No comments:
Post a Comment