https://issues.apache.org/bugzilla/show_bug.cgi?id=46370
Summary: NullPointerException in AccessLogValve
Product: Tomcat 6
Version: 6.0.18
Platform: All
OS/Version: Linux
Status: NEW
Severity: normal
Priority: P2
Component: Catalina
AssignedTo: [email protected]
ReportedBy: [EMAIL PROTECTED]
I get a NullPointerException (stacktrace follows) when I call
getNext().invoke(...) in my Valve, when in the valve chain exists the
AccessLogValve.
My valve creates a 'wrapper' for the Response using a class like this:
public class CountingResponse extends ResponseDecorator {
final private transient AtomicInteger counter;
private CountingResponseWrapper wrapper;
public CountingResponse(final Response target) {
super(target);
wrapper = null;
counter = new AtomicInteger(0);
}
@Override
public synchronized HttpServletResponse getResponse() {
if (wrapper == null) {
final HttpServletResponse supResponse =
super.getResponse();
if (supResponse == null) {
return null;
}
wrapper = new CountingResponseWrapper(supResponse,
counter);
}
return wrapper;
}
@Override
public ServletOutputStream getOutputStream() throws IOException {
final ServletOutputStream stream = super.getOutputStream();
if (stream instanceof CountingOutputStream) {
return stream;
}
return new CountingOutputStream(stream, counter);
}
@Override
public PrintWriter getWriter() throws IOException {
final PrintWriter writer = super.getWriter();
if (writer instanceof CountingWriter) {
return writer;
}
return new CountingWriter(writer, counter);
}
public int getCounter() {
return counter.get();
}
}
The ResponseDecorator is a a class that extends
org.apache.catalina.connector.Response, its constructor takes Response (target)
as argument and all public and protected calls are redirected to target (a
simple decorator).
The stacktrace:
java.lang.NullPointerException
at
org.apache.catalina.connector.Response.getContentCountLong(Response.java:313)
at
org.apache.catalina.valves.AccessLogValve$ByteSentElement.addElement(AccessLogValve.java:1102)
at
org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:582)
at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at
org.apache.catalina.ha.session.JvmRouteBinderValve.invoke(JvmRouteBinderValve.java:209)
at
org.apache.catalina.ha.tcp.ReplicationValve.invoke(ReplicationValve.java:347)
at pl.avantis.tomcat.valves.RemoteCLValve.invoke(RemoteCLValve.java:77)
at
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
at
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:845)
at
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
at
org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
at java.lang.Thread.run(Thread.java:619)
--
Configure bugmail: https://issues.apache.org/bugzilla/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug.
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]