You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@tomcat.apache.org by Kitching Simon <Si...@orange.ch> on 2000/11/14 17:54:32 UTC
RE: Please Look - 3.2 beta 7 problem - RequestDispatcher inclu
de()
> -----Original Message-----
> From: Wyn Easton [SMTP:wyn_easton@yahoo.com]
> Sent: Tuesday, November 14, 2000 2:47 PM
> To: tomcat-user@jakarta.apache.org
> Subject: RE: Please Look - 3.2 beta 7 problem - RequestDispatcher
> inclu de()
>
> Fair enough.
> I did notice the addition of:
>
> // NOTE: This *must* be done before the include flag is set for
> // this request!
> response.flushBuffer();
>
> in RequestDispatcherImpl.java. That is probably the change that made
> my include - forward stop working.
>
> I guess it is OK by the spec. to do multiple include() method calls?
[Kitching Simon]
Yes, no problem with this as far as I know.
Cheers,
Simon
> Thanks.
>
> --- Kitching Simon <Si...@orange.ch> wrote:
> >
> >
> > > -----Original Message-----
> > > From: Wyn Easton [SMTP:wyn_easton@yahoo.com]
> > > Sent: Tuesday, November 14, 2000 12:24 PM
> > > To: tomcat-user@jakarta.apache.org
> > > Subject: Please Look - 3.2 beta 7 problem - RequestDispatcher
> > > include()
> > >
> > > Are you not suppose to mix URL access with a RequestDispatcher?
> > > Thanks.
> > >
> > > Also, in 3.2 beta 6 I could do an include() then a forward().
> > > Now in 3.2 beta 7 I get an illegalState error on the forward()
> > > because of an open outputstream. I'm not opening an output stream.
> > > The include() must be doing it.
> > >
> > [Kitching Simon]
> > I don't think that it is valid to do include then forward, ie
> > if it was possible before, then *that* was the bug, not
> > the current behaviour.
> >
> > To quote from the servlet docs:
> >
> > forward should be called before the response has been committed
> > to the client (before response body output has been flushed).
> > If the response already has been committed, this method throws
> > an IllegalStateException.
> >
> > Now I can't find the reference for the moment, but I'm sure that in
> > the
> > specs somewhere it says that the buffer is *always* flushed before
> > an include operation.
> >
> > Therefore it is not possible, *by definition* to do an include then
> > a forward.
> > >
> > > --- Wyn Easton <wy...@yahoo.com> wrote:
> > > > I'm having this problem on 3.2 beta 7
> > > >
> > > > The exact text of the exception is:
> > > >
> > > > java.lang.IllegalArgumentException: Short Read
> > > >
> > > > This Exception is being generated in HttpUtils.java in the
> > > > parsePostData() method.
> > > >
> > > > Here is what is happening:
> > > >
> > > > I'm opening a HttpURLConnection to servlet_A that has been set to
> > use
> > > > the POST method by calling setRequestMethod("POST") for the
> > > > HttpURLConnection. In servlet_A I get a ServletInputStream and
> > > > read from the HttpURLConnection.
> > > > I then get an ServletOutputStream from the response.
> > > > I then get a RequestDispatcher for servlet_B.
> > > > When I call the include() method I get the exception mentioned
> > > > because parsePostData() in HttpUtils tries to read "len" number
> > > > of bytes from the ServletInputStream "in" and there is nothing
> > > > to read. I changed parsePostData() in HttpUtils to return an
> > > > empty Hashtable for this case and it worked fine.
> > > > (Maybe this is how this should work since nothing read means no
> > > > parameters in the POST data. Even if the len is greater than 0.)
> > > >
> > > > However, if I try to use the ServletOutputStream after returning
> > > > to servlet_A from servlet_B nothing is written to the original
> > > > HttpURLConnection. I don't know if the ServletOutputStream is
> > > > being closed when I return from the include(). I don't get an
> > > > Exception when writing to the ServletOutputStream. I just don't
> > > > get any data at the listening end of the HttpURLConnection.
> > > >
> > > > I'm going to modify my code to use the include() instead of
> > > > the HttpURLConnection, but shouldn't it work either way?
> > > >
> > > > Thanks.
> > > >
> > > >
> > > > =====
> > > > Wyn Easton
> > > > wyn_easton@yahoo.com
>
>
> =====
> Wyn Easton
> wyn_easton@yahoo.com
>
> __________________________________________________
> Do You Yahoo!?
> Yahoo! Calendar - Get organized for the holidays!
> http://calendar.yahoo.com/