Raw SOAP XML Logging
--------------------
Key: AXIS2-2728
URL: https://issues.apache.org/jira/browse/AXIS2-2728
Project: Axis 2.0 (Axis2)
Issue Type: New Feature
Components: modules
Environment: All
Reporter: Nathan Hook
Priority: Minor
It would be outstanding if there was a way to log the raw SOAP XML for each
request and response on a server.
Currently if a user of Axis2 wants to log the raw SOAP XML they must follow and
implement the 'Writing Your Own Axis2 Module' tutorial. The tutorial is found
at: http://ws.apache.org/axis2/1_2/modules.html
It would be nice if a default module was made to make the logging easier.
However, I could see the need to keep the current module explaining how to do
logging if more logging is required.
Finally it would be nice to also point out that this module works for both
requests made to the server and requests made from the server.
Here is the current handler we're using for our logging. It isn't great yet,
but it is a starting point for different ideas.
package com.xxx.axis2.handlers;
import java.util.*;
import javax.servlet.http.*;
import org.apache.axis2.*;
import org.apache.axis2.context.*;
import org.apache.axis2.handlers.*;
public class LogHandler extends AbstractHandler
{
private static org.apache.log4j.Logger log =
org.apache.log4j.Logger.getLogger(LogHandler.class);
private static ThreadLocal aSessionId = new ThreadLocal();
private String aName = null;
public InvocationResponse invoke(MessageContext messageContext) throws
AxisFault
{
Map map = messageContext.getProperties();
HttpServletRequest request =
(HttpServletRequest)map.get("transport.http.servletRequest");
log.debug("Service - start (invoke)");
if(request != null)
{
aSessionId.set(request.getSession().getId());
log.debug(" id: " + aSessionId.get());
}
log.debug(" operation: " +
messageContext.getAxisOperation().getKey());
log.debug(" service: " +
messageContext.getAxisService().getKey());
log.debug(" direction: " +
messageContext.getAxisMessage().getDirection());
if(messageContext.getFrom() != null)
{
log.debug(" remote ip: " +
messageContext.getFrom().getAddress());
}
log.debug(" binding name: " +
messageContext.getAxisService().getBindingName());
log.debug(" Envelope - start");
log.debug("\n " + messageContext.getEnvelope());
log.debug(" Envelope - end");
log.debug("Service - end");
if(messageContext.getAxisMessage().getDirection().equals("out"))
{
aSessionId.remove();
}
return InvocationResponse.CONTINUE;
}
public void revoke(MessageContext messageContext)
{
Map map = messageContext.getProperties();
HttpServletRequest request =
(HttpServletRequest)map.get("transport.http.servletRequest");
log.debug("Service - start (revoke)");
if(request != null)
{
aSessionId.set(request.getSession().getId());
log.debug(" id: " + aSessionId.get());
}
log.debug(" operation: " +
messageContext.getAxisOperation().getKey());
log.debug(" service: " +
messageContext.getAxisService().getKey());
log.debug(" direction: " +
messageContext.getAxisMessage().getDirection());
if(messageContext.getFrom() != null)
{
log.debug(" remote ip: " +
messageContext.getFrom().getAddress());
}
log.debug(" binding name: " +
messageContext.getAxisService().getBindingName());
log.debug(" Envelope - start");
log.debug("\n " + messageContext.getEnvelope());
log.debug(" Envelope - end");
log.debug("Service - end");
if(messageContext.getAxisMessage().getDirection().equals("out"))
{
aSessionId.remove();
}
}
public void setName(String name)
{
aName = name;
}
public String getName()
{
return aName;
}
}
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]