[ http://issues.apache.org/jira/browse/GERONIMO-1084?page=all ]

Jeff Genender reassigned GERONIMO-1084:
---------------------------------------

    Assign To: Matt Hogstrom

Lin, are you using the most up-to-date version of the day trader because your 
line numbers do not match what is in the source repo.  In anycase, the Tomcat 
container is very strict and follows the servlet spec exactly. The servlet spec 
says:

"SRV.14.2.22.1

getOutputStream() 
<SNIP>
Either this method or getWriter() may be called to write the body, not both.
</SNIP>
throws:
IllegalStateException - if the getWriter method has been called on this
response"

I have not looked at the Trader code in detail, but I assume the getWriter() 
was already calling either a forward or one of the includes, thus I think this 
is an issue with the Trader app.  That line you pointed should probably be 
changed to use getWriter().   I will assign this to Matt to look at. 

> Trade web primitive--PingServlet2Include failed:  getWriter() has already 
> been called for this response
> -------------------------------------------------------------------------------------------------------
>
>          Key: GERONIMO-1084
>          URL: http://issues.apache.org/jira/browse/GERONIMO-1084
>      Project: Geronimo
>         Type: Bug
>   Components: Tomcat
>     Versions: 1.0-M5
>  Environment: Windows + Tomcat
>     Reporter: Lin Sun
>     Assignee: Matt Hogstrom

>
> Deployed daytrader and found out day/trader/servlet/PingServlet2Include 
> didn't work, and the exceptions threw:
> Error: PingServlet2Include.doGet(...): general exception
>                
>                java.lang.IllegalStateException: getWriter() has already been 
> called for this response
> java.lang.IllegalStateException: getWriter() has already been called for this 
> response
>                at 
> org.apache.catalina.connector.Response.getOutputStream(Response.java:565)
>                at 
> org.apache.catalina.connector.ResponseFacade.getOutputStream(ResponseFacade.java:171)
>                at 
> org.apache.geronimo.samples.daytrader.web.prims.PingServlet2Include.doGet(PingServlet2Include.java:61)
>                at javax.servlet.http.HttpServlet.service(HttpServlet.java:595)
>                at javax.servlet.http.HttpServlet.service(HttpServlet.java:688)
>                at 
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
>                at 
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
>                at 
> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
>                at 
> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
>                at 
> org.apache.geronimo.tomcat.valve.TransactionContextValve.invoke(TransactionContextValve.java:53)
>                at 
> org.apache.geronimo.tomcat.valve.ComponentContextValve.invoke(ComponentContextValve.java:47)
>                at 
> org.apache.geronimo.tomcat.valve.InstanceContextValve.invoke(InstanceContextValve.java:60)
>                at 
> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
>                at 
> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
>                at 
> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
>                at 
> org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:526)
>                at 
> org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
>                at 
> org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:856)
>                at 
> org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:744)
>                at 
> org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
>                at 
> org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
>                at 
> org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
>                at java.lang.Thread.run(Thread.java:568)
> java.lang.IllegalStateException: getWriter() has already been called for this 
> response
>                at 
> org.apache.catalina.connector.Response.getOutputStream(Response.java:565)
>                at 
> org.apache.catalina.connector.ResponseFacade.getOutputStream(ResponseFacade.java:171)
>                at 
> org.apache.geronimo.samples.daytrader.web.prims.PingServlet2Include.doGet(PingServlet2Include.java:61)
>                at javax.servlet.http.HttpServlet.service(HttpServlet.java:595)
>                at javax.servlet.http.HttpServlet.service(HttpServlet.java:688)
>                at 
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
>                at 
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
>                at 
> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
>                at 
> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
>                at 
> org.apache.geronimo.tomcat.valve.TransactionContextValve.invoke(TransactionContextValve.java:53)
>                at 
> org.apache.geronimo.tomcat.valve.ComponentContextValve.invoke(ComponentContextValve.java:47)
>                at 
> org.apache.geronimo.tomcat.valve.InstanceContextValve.invoke(InstanceContextValve.java:60)
>                at 
> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
>                at 
> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
>                at 
> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
>                at 
> org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:526)
>                at 
> org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
>                at 
> org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:856)
>                at 
> org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:744)
>                at 
> org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
>                at 
> org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
>                at 
> org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
>                at java.lang.Thread.run(Thread.java:568)
> java.lang.NullPointerException
>                at 
> org.apache.jsp.error_jsp._jspService(org.apache.jsp.error_jsp:96)
>                at 
> org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
>                at javax.servlet.http.HttpServlet.service(HttpServlet.java:688)
>                at 
> org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:322)
>                at 
> org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:291)
>                at 
> org.apache.jasper.servlet.JspServlet.service(JspServlet.java:241)
>                at javax.servlet.http.HttpServlet.service(HttpServlet.java:688)
>                at 
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
>                at 
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
>                at 
> org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:672)
>                at 
> org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:465)
>                at 
> org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:398)
>                at 
> org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:301)
>                at 
> org.apache.catalina.core.StandardHostValve.custom(StandardHostValve.java:362)
>                at 
> org.apache.catalina.core.StandardHostValve.status(StandardHostValve.java:283)
>                at 
> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:136)
>                at 
> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
>                at 
> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
>                at 
> org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:526)
>                at 
> org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
>                at 
> org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:856)
>                at 
> org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:744)
>                at 
> org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
>                at 
> org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
>                at 
> org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
>                at java.lang.Thread.run(Thread.java:568)
> In org.apache.geronimo.samples.daytrader.web.prims.PingServlet2Include.java 
> file, I tried to replace 
>                        ServletOutputStream out = res.getOutputStream();
> with
>                         java.io.PrintWriter out = res.getWriter();
> and rebuilt daytrader.    I was able to get the primitive working afterwards. 
>   However, I don't think changing the code is the right approach since it 
> worked with other web containers.

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
   http://www.atlassian.com/software/jira

Reply via email to