A long question:

First, I have a Servlet that writes to response.getOutputStream().  Here's a 
snippet:
 public class AuditTrailServlet extends HttpServlet {
   public void doGet( HttpServletRequest request, HttpServletResponse response )
     response.setContentType( "application/vnd.ms-excel" );
     response.setHeader( "Content-Disposition", "attachment; filename=" + 
fileName );

     ResultSet rs = ...;
     for ( int row = 0 ; rs.next(); row++ ) {
       // iterate over each row in the ResultSet
       for( int col = 0; fieldNameIt.hasNext(); col++ ) {
         // iterate over each column in the results, write to spreadsheet
// custom code. // let us assume this block has a bug that occasionally throws a NullPointerException, // but only after a bunch of cells are written first. response.getOutputStream().write( /* excel byte[] */ ); // more custom code.
       }
     }
     rs.close();
response.setStatus( HttpServletResponse.SC_OK );
   }
 }

Second, I have the following in the web.xml file, to tell tomcat to use a 
custom error page:
 <error-page>
   <exception-type>java.lang.Throwable</exception-type>
   <location>/myError.jsp</location>
 </error-page>

Last, here's myError.jsp:
 <%@ page isErrorPage='true' %>
 <html>
 <body>
 <h1>System Error</h1>
 <p>
 You have encountered a system error.
 </p>
<%-- custom error processing that can't be done in a static .html page --%> </body>
 </html>


So, it all seems standard and straight-forward, right?



However, instead of seeing a nice custom error page when the NPE happens, I get the 
"ugly" Tomcat error page, and
the following in the Tomcat logs:
 java.lang.IllegalStateException: getOutputStream() has already been called for 
this response
 at org.apache.catalina.connector.ResponseBase.getWriter(ResponseBase.java:709)
 at 
org.apache.catalina.connector.ResponseFacade.getWriter(ResponseFacade.java:127)
 at org.apache.jasper.runtime.JspWriterImpl.initOut(JspWriterImpl.java:128)
 at org.apache.jasper.runtime.JspWriterImpl.flushBuffer(JspWriterImpl.java:121)
 at org.apache.jasper.runtime.PageContextImpl.release(PageContextImpl.java:137)
 at 
org.apache.jasper.runtime.JspFactoryImpl.internalReleasePageContext(JspFactoryImpl.java:153)
 at 
org.apache.jasper.runtime.JspFactoryImpl.releasePageContext(JspFactoryImpl.java:148)
 at org.apache.jsp.error_jsp._jspService(error_jsp.java:284)


Yes, I know -- I *am* using Tomcat 4.1 (rather than the latest and greatest) 
for various legacy and political reasons.


But my question is this:
- Is this a known bug?  Or am I doing something wrong with either the servlet, 
the web.xml or with the jsp page?

Thanks,
--
Dave Cherkassky
 VP of Software Development
 DJiNN Software Inc.
 416.504.1354

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
For additional commands, e-mail: users-h...@tomcat.apache.org

Reply via email to