> -----Original Message-----
> From: Wyn Easton [SMTP:[EMAIL PROTECTED]]
> Sent: Tuesday, November 14, 2000 12:24 PM
> To: [EMAIL PROTECTED]
> 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 <[EMAIL PROTECTED]> 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
> > [EMAIL PROTECTED]
> >
> > __________________________________________________
> > Do You Yahoo!?
> > Yahoo! Calendar - Get organized for the holidays!
> > http://calendar.yahoo.com/
>
>
> =====
> Wyn Easton
> [EMAIL PROTECTED]
>
> __________________________________________________
> Do You Yahoo!?
> Yahoo! Calendar - Get organized for the holidays!
> http://calendar.yahoo.com/