You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by Geoff Soutter <ge...@whitewolf.com.au> on 2001/06/14 05:12:14 UTC

[repost] [T4] servlet including jsp causes jsp to flush buffer?

come on guys, I know you're listening ... :-)

is this really a bug or am I missing something obvious? (I'm not really up
to speed on Jasper...)

If it is I can enter it into bugzilla...

geoff

----- Original Message -----
From: "Geoff Soutter" <ge...@whitewolf.com.au>
To: <to...@jakarta.apache.org>
Sent: Wednesday, June 13, 2001 4:14 PM
Subject: [T4] servlet including jsp causes jsp to flush buffer?


> Hi,
>
> I've got a servlet which includes a JSP page, and it appears that the JSP
> engine in Tomcat 4.0 calls response.flushBuffer() when the include
finishes.
>
> IMHO this behaviour is incorrect, as it should be up to the "topmost"
> servlet to control what is happening with the buffering as much as
possible.
> Currently this behaviour is preventing my servlet from controlling the
> buffering as it would like to.
>
> I looked though the list and noticed that v3.x has many flushing problems
> but I was kinda hoping they'd be fixed in Tomcat 4.x ;-).
>
> Anyway, here's the offending code (I think).
>
> In PageContextImpl.java
>
> public void release() {
>   try {
>     if (isIncluded) {
>       ((JspWriterImpl)out).flushBuffer(); // push it into the including
> jspWriter
>     } else {
>       out.flush();
>     }
>   } catch (IOException ex) {
>     loghelper.log("Internal error flushing the buffer in release()");
>   }
>
> and in JspWriterImpl.java
>
> public void flush()  throws IOException {
>   synchronized (lock) {
>     flushBuffer();
>     if (out != null) {
>       out.flush();
>       // Also flush the response buffer.
>       response.flushBuffer();
>     }
>   }
> }
>
> Geoff
>
> --
> Keep cool till after school!
>
>


Re: [repost] [T4] servlet including jsp causes jsp to flush buffer?

Posted by Geoff Soutter <ge...@whitewolf.com.au>.
Sorry, my fault.

This was actually our code calling stream.flush() which ends up calling
response.flushBuffer() (fairly reasonable, really :-).

So, looks like the T4 code is beyond reproach, again.

Geoff


----- Original Message -----
From: "Geoff Soutter" <ge...@whitewolf.com.au>
To: <to...@jakarta.apache.org>
Sent: Thursday, June 14, 2001 1:12 PM
Subject: [repost] [T4] servlet including jsp causes jsp to flush buffer?


> come on guys, I know you're listening ... :-)
>
> is this really a bug or am I missing something obvious? (I'm not really up
> to speed on Jasper...)
>
> If it is I can enter it into bugzilla...
>
> geoff
>
> ----- Original Message -----
> From: "Geoff Soutter" <ge...@whitewolf.com.au>
> To: <to...@jakarta.apache.org>
> Sent: Wednesday, June 13, 2001 4:14 PM
> Subject: [T4] servlet including jsp causes jsp to flush buffer?
>
>
> > Hi,
> >
> > I've got a servlet which includes a JSP page, and it appears that the
JSP
> > engine in Tomcat 4.0 calls response.flushBuffer() when the include
> finishes.
> >
> > IMHO this behaviour is incorrect, as it should be up to the "topmost"
> > servlet to control what is happening with the buffering as much as
> possible.
> > Currently this behaviour is preventing my servlet from controlling the
> > buffering as it would like to.
> >
> > I looked though the list and noticed that v3.x has many flushing
problems
> > but I was kinda hoping they'd be fixed in Tomcat 4.x ;-).
> >
> > Anyway, here's the offending code (I think).
> >
> > In PageContextImpl.java
> >
> > public void release() {
> >   try {
> >     if (isIncluded) {
> >       ((JspWriterImpl)out).flushBuffer(); // push it into the including
> > jspWriter
> >     } else {
> >       out.flush();
> >     }
> >   } catch (IOException ex) {
> >     loghelper.log("Internal error flushing the buffer in release()");
> >   }
> >
> > and in JspWriterImpl.java
> >
> > public void flush()  throws IOException {
> >   synchronized (lock) {
> >     flushBuffer();
> >     if (out != null) {
> >       out.flush();
> >       // Also flush the response buffer.
> >       response.flushBuffer();
> >     }
> >   }
> > }
> >
> > Geoff
> >
> > --
> > Keep cool till after school!
> >
> >
>
>