Bug 117 - IllegalStateException when error in jsp servlet include encountered BugRat Report#124
Summary: IllegalStateException when error in jsp servlet include encountered BugRat Re...
Status: RESOLVED FIXED
Alias: None
Product: Tomcat 3
Classification: Unclassified
Component: Jasper (show other bugs)
Version: 3.2.1 Final
Hardware: All All
: P1 normal (vote)
Target Milestone: ---
Assignee: Tomcat Developers Mailing List
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2000-09-15 15:14 UTC by Kelly Campbell
Modified: 2004-11-16 19:05 UTC (History)
0 users



Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Tomcat Developers Mailing List 2000-09-15 15:14:29 UTC
If a jsp page references a servlet after including some other content, and gets a ClassNotFoundException on that servlet, an IllegalStateException occurs during a buffer reset.
This error is very misleading, and doesn't point to the classpath or servlet setup in web.xml as the cause. It looks like it's an internal error in Tomcat
instead of a simple configuration error.

Stacktraces:

Location:/test/foobar.jsp

Internal Servlet Error:

javax.servlet.ServletException: can't reset buffer after writing to client
        at org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:448)
        at _0002ffoobar_0002ejspfoobar_jsp_1._jspService(_0002ffoobar_0002ejspfoobar_jsp_1.java:75)
        at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:119)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
        at org.apache.jasper.servlet.JspServlet$JspServletWrapper.service(JspServlet.java:177)
        at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:309)
        at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:382)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
        at org.apache.tomcat.core.ServletWrapper.doService(ServletWrapper.java:387)
        at org.apache.tomcat.core.Handler.service(Handler.java:263)
        at org.apache.tomcat.core.ServletWrapper.service(ServletWrapper.java:371)
        at org.apache.tomcat.core.ContextManager.internalService(ContextManager.java:749)
        at org.apache.tomcat.core.ContextManager.service(ContextManager.java:695)
        at org.apache.tomcat.service.http.HttpConnectionHandler.processConnection(HttpConnectionHandler.java:207)
        at org.apache.tomcat.service.TcpWorkerThread.runIt(PoolTcpEndpoint.java:403)
        at org.apache.tomcat.util.ThreadPool$ControlRunnable.run(ThreadPool.java:498)
        at java.lang.Thread.run(Thread.java:475)

Root cause: 

java.lang.IllegalStateException: can't reset buffer after writing to client
        at org.apache.tomcat.core.BufferedServletOutputStream.reset(BufferedServletOutputStream.java:296)
        at org.apache.tomcat.core.ResponseImpl.resetBuffer(ResponseImpl.java:395)
        at org.apache.tomcat.core.ContextManager.handleStatus(ContextManager.java:953)
        at org.apache.tomcat.core.Handler.service(Handler.java:249)
        at org.apache.tomcat.core.ServletWrapper.service(ServletWrapper.java:371)
        at org.apache.tomcat.facade.RequestDispatcherImpl.include(RequestDispatcherImpl.java:308)
        at org.apache.jasper.runtime.PageContextImpl.include(PageContextImpl.java:407)
        at _0002ffoobar_0002ejspfoobar_jsp_1._jspService(_0002ffoobar_0002ejspfoobar_jsp_1.java:65)
        at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:119)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
        at org.apache.jasper.servlet.JspServlet$JspServletWrapper.service(JspServlet.java:177)
        at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:309)
        at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:382)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
        at org.apache.tomcat.core.ServletWrapper.doService(ServletWrapper.java:387)
        at org.apache.tomcat.core.Handler.service(Handler.java:263)
        at org.apache.tomcat.core.ServletWrapper.service(ServletWrapper.java:371)
        at org.apache.tomcat.core.ContextManager.internalService(ContextManager.java:749)
        at org.apache.tomcat.core.ContextManager.service(ContextManager.java:695)
        at org.apache.tomcat.service.http.HttpConnectionHandler.processConnection(HttpConnectionHandler.java:207)
        at org.apache.tomcat.service.TcpWorkerThread.runIt(PoolTcpEndpoint.java:403)
        at org.apache.tomcat.util.ThreadPool$ControlRunnable.run(ThreadPool.java:498)
        at java.lang.Thread.run(Thread.java:475)
Comment 1 Larry Isaacs 2001-09-10 19:35:10 UTC
This bug was originally logged against Tomcat 3.2b4. In Tomcat 3.2.3,
a 404 error occurs on the missing servlet.  In Tomcat 3.3, a stack trace occurs
similar to the stack traces shown except that the top exception says
"Included servlet threw exception" and the root exception is a
ClassNotFoundException exception naming the missing class.