org.apache.catalina.valves
public class: RequestDumperValve [javadoc |
source]
java.lang.Object
org.apache.catalina.valves.ValveBase
org.apache.catalina.valves.RequestDumperValve
All Implemented Interfaces:
Valve, MBeanRegistration, Contained
Implementation of a Valve that logs interesting contents from the
specified Request (before processing) and the corresponding Response
(after processing). It is especially useful in debugging problems
related to headers and cookies.
This Valve may be attached to any Container, depending on the granularity
of the logging you wish to perform.
- author:
Craig - R. McClanahan
- version:
$ - Revision: 467222 $ $Date: 2006-10-24 05:17:11 +0200 (mar., 24 oct. 2006) $
| Field Summary |
|---|
| protected static StringManager | sm | The StringManager for this package. |
| Methods from org.apache.catalina.valves.ValveBase: |
|---|
|
backgroundProcess, createObjectName, event, getContainer, getContainerName, getController, getDomain, getInfo, getNext, getObjectName, getParentName, invoke, postDeregister, postRegister, preDeregister, preRegister, setContainer, setController, setNext, setObjectName, toString |
| Method from org.apache.catalina.valves.RequestDumperValve Detail: |
public String getInfo() {
// ------------------------------------------------------------- Properties
return (info);
}
Return descriptive information about this Valve implementation. |
public void invoke(Request request,
Response response) throws IOException, ServletException {
Log log = container.getLogger();
// Log pre-service information
log.info("REQUEST URI =" + request.getRequestURI());
log.info(" authType=" + request.getAuthType());
log.info(" characterEncoding=" + request.getCharacterEncoding());
log.info(" contentLength=" + request.getContentLength());
log.info(" contentType=" + request.getContentType());
log.info(" contextPath=" + request.getContextPath());
Cookie cookies[] = request.getCookies();
if (cookies != null) {
for (int i = 0; i < cookies.length; i++)
log.info(" cookie=" + cookies[i].getName() + "=" +
cookies[i].getValue());
}
Enumeration hnames = request.getHeaderNames();
while (hnames.hasMoreElements()) {
String hname = (String) hnames.nextElement();
Enumeration hvalues = request.getHeaders(hname);
while (hvalues.hasMoreElements()) {
String hvalue = (String) hvalues.nextElement();
log.info(" header=" + hname + "=" + hvalue);
}
}
log.info(" locale=" + request.getLocale());
log.info(" method=" + request.getMethod());
Enumeration pnames = request.getParameterNames();
while (pnames.hasMoreElements()) {
String pname = (String) pnames.nextElement();
String pvalues[] = request.getParameterValues(pname);
StringBuffer result = new StringBuffer(pname);
result.append('=");
for (int i = 0; i < pvalues.length; i++) {
if (i > 0)
result.append(", ");
result.append(pvalues[i]);
}
log.info(" parameter=" + result.toString());
}
log.info(" pathInfo=" + request.getPathInfo());
log.info(" protocol=" + request.getProtocol());
log.info(" queryString=" + request.getQueryString());
log.info(" remoteAddr=" + request.getRemoteAddr());
log.info(" remoteHost=" + request.getRemoteHost());
log.info(" remoteUser=" + request.getRemoteUser());
log.info("requestedSessionId=" + request.getRequestedSessionId());
log.info(" scheme=" + request.getScheme());
log.info(" serverName=" + request.getServerName());
log.info(" serverPort=" + request.getServerPort());
log.info(" servletPath=" + request.getServletPath());
log.info(" isSecure=" + request.isSecure());
log.info("---------------------------------------------------------------");
// Perform the request
getNext().invoke(request, response);
// Log post-service information
log.info("---------------------------------------------------------------");
log.info(" authType=" + request.getAuthType());
log.info(" contentLength=" + response.getContentLength());
log.info(" contentType=" + response.getContentType());
Cookie rcookies[] = response.getCookies();
for (int i = 0; i < rcookies.length; i++) {
log.info(" cookie=" + rcookies[i].getName() + "=" +
rcookies[i].getValue() + "; domain=" +
rcookies[i].getDomain() + "; path=" + rcookies[i].getPath());
}
String rhnames[] = response.getHeaderNames();
for (int i = 0; i < rhnames.length; i++) {
String rhvalues[] = response.getHeaderValues(rhnames[i]);
for (int j = 0; j < rhvalues.length; j++)
log.info(" header=" + rhnames[i] + "=" + rhvalues[j]);
}
log.info(" message=" + response.getMessage());
log.info(" remoteUser=" + request.getRemoteUser());
log.info(" status=" + response.getStatus());
log.info("===============================================================");
}
Log the interesting request parameters, invoke the next Valve in the
sequence, and log the interesting response parameters. |
public String toString() {
StringBuffer sb = new StringBuffer("RequestDumperValve[");
if (container != null)
sb.append(container.getName());
sb.append("]");
return (sb.toString());
}
Return a String rendering of this object. |