Ethan,
You missed some good discussions on this two weeks ago
between Costin and myself! :-)
Not only is it (premature commit) caused by the
RequestDispatcher.include() calling flushBuffer() but
there are other out.flush() calls in jasper that
contribute to the problem.
I don't know if it will or can be fixed in the 3.2.2
release (Mark?). The RequestDispatcher.include() bug
is fixed in tc3.3.
Costin - were you going to make the changes
(out.flush() -> out.flushBuffers()) in
JspParseEventListener.generateFooter() and
PageContextImpl.include() that we had discussed? I
had thought that you implied you were going to do it
(that was before I was a committer) but I just noticed
that the out.flush() calls are still the same as
before.
Send me a note and I'll do this if you can't get to
it.
Mel
--- Ethan Wallwork <[EMAIL PROTECTED]>
wrote:
> Here is some more info on this problem. I'm seem to
> be having some problems
> with the respnse getting committed too early. It
> still seems wrong that an
> error page ever get returned with status code 200
> though.
>
> 1) client makes request to Tomcat
> 2) Tomcat calls service() on my main servlet
> 3) servlet does an include() on some (possibly
> non-existant) JSP
> 4) JSP file does not exist (expected)
> 5) FileNotFoundException thrown from include()
> 6) main servlet catches exception
> 7) main servlet calls sendError()
> 8) sendError throws IllegalStateException (response
> already committed)
> 9) my error servlet gets called
> 10) error page get generated and sent to client with
> HTTP status 200 OK
>
> The RequestDispatcher.include() method calls
> flushBuffer(), which commits the
> response. This seems to mean that if you have a
> servlet which includes a JSP,
> any errors that occur can never be handled properly.
> Yikes!
>
> Code comments indicate that this flushBuffer() is
> not required by the spec, but
> is instead there to work around a problem with the
> session interceptor (BugRat
> bug #316).
>
> --
> Ethan
>
> -----Original Message-----
> From: Ethan Wallwork
> [mailto:[EMAIL PROTECTED]]
> Sent: Wednesday, February 28, 2001 1:03 PM
> To: Tomcat-Dev
> Subject: HTTP Status Codes and Error Pages
>
>
>
> I can't tell if this is a bug or intended behavior:
>
> I have a servlet that acts as the error page for my
> webapp. Note that this is
> set up using the web.xml file, not the errorPage
> directive in the JSPs (if that
> makes any difference?)
>
> When there is an error (say 500 Internal Server
> Error), it returns a WML page
> saying things went wrong. This page is being
> properly generated, but the HTTP
> response code being sent along with it is "200 OK"!
>
> The request attribute java.servlet.error.status_code
> is set to 500, as I would
> expect. Calling response.setStatus(500) in the
> error servlet changes nothing.
>
> This is the response I get, headers included:
>
> HTTP/1.0 200 OK
> Content-Type: text/vnd.wap.wml;charset=UTF-8
> Cache-Control: no-cache
> Servlet-Engine: Tomcat Web Server/3.2 (final) (JSP
> 1.1; Servlet 2.2; Java
> 1.3.0; SunOS 5.8 sparc; java.vendor=Sun Microsystems
> Inc.)
>
> <?xml version="1.0"?>
> <!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN"
> "http://www.wapforum.org/DTD/wml_1.1.xml">
> <wml>
> <card title="Error 500" id="error">
> <do label="Back" type="prev">
> <prev/>
> </do>
> <p>
> We're sorry, your request could be fulfilled.
> <br/>
> 500 Internal Server Error
> </p>
> </card>
> </wml>
>
>
>
>
---------------------------------------------------------------------
> To unsubscribe, e-mail:
> [EMAIL PROTECTED]
> For additional commands, email:
> [EMAIL PROTECTED]
>
>
>
>
>
>
---------------------------------------------------------------------
> To unsubscribe, e-mail:
> [EMAIL PROTECTED]
> For additional commands, email:
> [EMAIL PROTECTED]
>
__________________________________________________
Do You Yahoo!?
Get email at your own domain with Yahoo! Mail.
http://personal.mail.yahoo.com/
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, email: [EMAIL PROTECTED]