tomcat-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Wyn Easton <wyn_eas...@yahoo.com>
Subject RE: Please Look - 3.2 beta 7 problem - RequestDispatcher inclu de()
Date Tue, 14 Nov 2000 13:47:05 GMT
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?

Thanks.

--- Kitching Simon <Simon.Kitching@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 <wyn_easton@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/

Mime
View raw message