Hi,
I saw your message on tomcat-user.  Several other Tomcat developers also
follow that list.  I personally looking at the stack trace chose to
discard your message for a few reasons:
- The AJP connector in the stack trace indicates Apache in front of
Tomcat, making Apache and the AJP connector possible culprits.  Unless
you reproduce this with Tomcat standalone, I'm not convinced.
- The fact it's 4.1.30, which is a mature branch that's been in the
market for a while, and if what you're reporting is really true we would
have heard about it via bug reports a long time ago.
- Also being on a 4.x release, I'm not as interested, because only 5.x
is being actively developed.  If you reported this error on 5.0.27
standalone tomcat I suspect you would have gotten replies on the
tomcat-user list from me and others.

Yoav Shapira
Millennium Research Informatics


>-----Original Message-----
>From: j.random.programmer [mailto:[EMAIL PROTECTED]
>Sent: Friday, July 23, 2004 3:58 PM
>To: [EMAIL PROTECTED]
>Subject: getReader() BUG in tomcat 4.1.30 and beyond ?
>
>Hi:
>
>I posted this in the tomcat-user but got no replies. I
>thought tomcat developers read that list ?
>
>Anyway, here's the problem:
>
>Jsp's unders tomcat 4.1.30 return an empty
>request.getInputStream().
>
>If you _don't_ call request.getInputStream() in
>your jsp but do call request.getReader(), an
>invalid state exception saying that the input
>stream has already been opened. Clearly, the
>engine is opening the inputstream behind the
>scenes and reading all it's input. That's wrong,
>non-spec behavior.
>
>For example:
>
>----------- hello.jsp -------------
>hello world
><h2>POST PARAMS</h2>
><%
>java.io.Reader in = request.getReader();
>int c = -1;
>while ( (c = in.read()) != -1) {
>        out.print((char)c);
>        }
>%>
>--------------------------------------
>
>If any form is posted to hello.jsp (i.e, the
>action of some form is set to hello.jsp), then
>when the form is posted, hello.jsp will crap out.
>[if you replaced getReader() in the above code
>with getInputStream, the returned input stream
>will be empty].
>
>This is ridiculous. Am I missing something ?
>
>Here's the stack trace (NOTE, I am NOT calling
>getParamater or similar method, the entire
>hello.jsp is shown above). I am NOT NOT NOT
>opening the inputstream anywhere.
>
>Once again, here is the ENTIRE .jsp that the form is
>posted to.
>
>----------- hello.jsp -------------
>hello world
><h2>POST PARAMS</h2>
><%
>java.io.Reader in = request.getReader();
>int c = -1;
>while ( (c = in.read()) != -1) {
>        out.print((char)c);
>        }
>%>
>--------------------------------------
>message Internal Server Error
>description The server encountered an internal error
>(Internal Server Error) that prevented it from
>fulfilling this request.
>exception
>
>org.apache.jasper.JasperException: getInputStream()
>has already been called for this request
>       at
>org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.j
ava:
>254)
>       at
>org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:295
)
>       at
>org.apache.jasper.servlet.JspServlet.service(JspServlet.java:241)
>       at
>javax.servlet.http.HttpServlet.service(HttpServlet.java:103)
>       at
>org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Applic
atio
>nFilterChain.java:247)
>       at
>org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFil
terC
>hain.java:193)
>       at
>org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperVal
ve.j
>ava:256)
>       at
>org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.
invo
>keNext(StandardPipeline.java:643)
>       at
>org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:
480)
>       at
>org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
>       at
>org.apache.catalina.core.StandardContextValve.invoke(StandardContextVal
ve.j
>ava:191)
>       at
>org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.
invo
>keNext(StandardPipeline.java:643)
>       at
>org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:
480)
>       at
>org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
>       at
>org.apache.catalina.core.StandardContext.invoke(StandardContext.java:24
22)
>       at
>org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.jav
a:18
>0)
>       at
>org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.
invo
>keNext(StandardPipeline.java:643)
>       at
>org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherV
alve
>.java:171)
>       at
>org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.
invo
>keNext(StandardPipeline.java:641)
>       at
>org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.jav
a:16
>3)
>       at
>org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.
invo
>keNext(StandardPipeline.java:641)
>       at
>org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:
480)
>       at
>org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
>       at
>org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve
.jav
>a:174)
>       at
>org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.
invo
>keNext(StandardPipeline.java:643)
>       at
>org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:
480)
>       at
>org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
>       at
>org.apache.ajp.tomcat4.Ajp13Processor.process(Ajp13Processor.java:457)
>       at
>org.apache.ajp.tomcat4.Ajp13Processor.run(Ajp13Processor.java:576)
>       at java.lang.Thread.run(Thread.java:552)
>
>root cause
>
>java.lang.IllegalStateException: getInputStream() has
>already been called for this request
>       at
>org.apache.catalina.connector.RequestBase.getReader(RequestBase.java:91
1)
>       at
>org.apache.catalina.connector.RequestFacade.getReader(RequestFacade.jav
a:21
>2)
>       at
>org.apache.jsp.hello_jsp._jspService(hello_jsp.java:45)
>       at
>org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:137)
>       at
>javax.servlet.http.HttpServlet.service(HttpServlet.java:103)
>       at
>org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.j
ava:
>210)
>       at
>org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:295
)
>       at
>org.apache.jasper.servlet.JspServlet.service(JspServlet.java:241)
>       at
>javax.servlet.http.HttpServlet.service(HttpServlet.java:103)
>       at
>org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Applic
atio
>nFilterChain.java:247)
>       at
>org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFil
terC
>hain.java:193)
>       at
>org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperVal
ve.j
>ava:256)
>       at
>org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.
invo
>keNext(StandardPipeline.java:643)
>       at
>org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:
480)
>       at
>org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
>       at
>org.apache.catalina.core.StandardContextValve.invoke(StandardContextVal
ve.j
>ava:191)
>       at
>org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.
invo
>keNext(StandardPipeline.java:643)
>       at
>org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:
480)
>       at
>org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
>       at
>org.apache.catalina.core.StandardContext.invoke(StandardContext.java:24
22)
>       at
>org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.jav
a:18
>0)
>       at
>org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.
invo
>keNext(StandardPipeline.java:643)
>       at
>org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherV
alve
>.java:171)
>       at
>org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.
invo
>keNext(StandardPipeline.java:641)
>       at
>org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.jav
a:16
>3)
>       at
>org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.
invo
>keNext(StandardPipeline.java:641)
>       at
>org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:
480)
>       at
>org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
>       at
>org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve
.jav
>a:174)
>       at
>org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.
invo
>keNext(StandardPipeline.java:643)
>       at
>org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:
480)
>       at
>org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
>       at
>org.apache.ajp.tomcat4.Ajp13Processor.process(Ajp13Processor.java:457)
>       at
>org.apache.ajp.tomcat4.Ajp13Processor.run(Ajp13Processor.java:576)
>       at java.lang.Thread.run(Thread.java:552)
>
>
>--j
>
>
>
>
>
>
>__________________________________
>Do you Yahoo!?
>New and Improved Yahoo! Mail - 100MB free storage!
>http://promotions.yahoo.com/new_mail
>
>---------------------------------------------------------------------
>To unsubscribe, e-mail: [EMAIL PROTECTED]
>For additional commands, e-mail: [EMAIL PROTECTED]


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to