You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@tomcat.apache.org by "Craig R. McClanahan" <cr...@apache.org> on 2001/10/08 18:51:50 UTC

Re: Filter prob::java.lang.IllegalStateException: getOutputStream()


On Mon, 8 Oct 2001, paul wrote:

> Date: Mon, 8 Oct 2001 17:00:45 +0100
> From: paul <pa...@roadrunner.uk.com>
> Reply-To: tomcat-user@jakarta.apache.org
> To: tomcat-user@jakarta.apache.org
> Subject: Filter prob::java.lang.IllegalStateException: getOutputStream()
>
>
> I am playing around withn processing the response using filters but keep
> getting this error (below)
> I am not executing my code indicated by the **
>
> -
>
>
>
>   public void doFilter(ServletRequest request, ServletResponse response,
> FilterChain chain)
>               throws IOException, ServletException {
>
>     System.out.println("..............................doing filters");
>
>     OutputStream out = response.getOutputStream();
>

If you do this in your filter, that means the servlet that is ultimately
called will not be allowed to call response.getWriter() -- which is what
caused the exception you quote below, since JSP pages use
response.getWriter() to create their response.  The exact same thing would
happen if you call response.getOutputStream() in a servlet, and then use a
RequestDispatcher.include() call to include a JSP page.

A good filter design will override both the getOutputStream() and
getWriter() methods in the wrapper, so that the servlet itself can use
whichever mechanism it wants to.

Craig


>     **ResponseWrapper myResponse = new
> ResponseWrapper((HttpServletResponse)response);
>     chain.doFilter(request,response);
>     **out.close();
>
>   }
>
>
>
>
>
> java.lang.IllegalStateException: getOutputStream() has already been called
> for this response
>  at java.lang.IllegalStateException.(IllegalStateException.java:47)
>  at org.apache.catalina.connector.ResponseBase.getWriter(Unknown Source)
>  at org.apache.catalina.connector.ResponseFacade.getWriter(Unknown Source)
>  at org.apache.jasper.runtime.JspWriterImpl.initOut(Unknown Source)
>  at org.apache.jasper.runtime.JspWriterImpl.flushBuffer(Unknown Source)
>  at org.apache.jasper.runtime.JspWriterImpl.write(Unknown Source)
>  at org.apache.jasper.runtime.JspWriterImpl.write(Unknown Source)
>  at org.apache.jsp.CTListSC$jsp._jspService(CTListSC$jsp.java(Compiled
> Code))
>  at org.apache.jasper.runtime.HttpJspBase.service(Unknown Source)
>  at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
>  at org.apache.jasper.servlet.JspServlet$JspServletWrapper.service(Unknown
> Source)
>  at org.apache.jasper.servlet.JspServlet.serviceJspFile(Unknown Source)
>  at org.apache.jasper.servlet.JspServlet.service(Unknown Source)
>  at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
>  at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Unknown
> Source)
>  at org.apache.catalina.core.ApplicationFilterChain.doFilter(Unknown Source)
>  at playjsp.FilterTest.doFilter(FilterTest.java:41)
>  at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Unknown
> Source)
>  at org.apache.catalina.core.ApplicationFilterChain.doFilter(Unknown Source)
>  at org.apache.catalina.core.StandardWrapperValve.invoke(Unknown Source)
>  at org.apache.catalina.core.StandardPipeline.invokeNext(Unknown Source)
>  at org.apache.catalina.core.StandardPipeline.invoke(Unknown Source)
>  at org.apache.catalina.core.ContainerBase.invoke(Unknown Source)
>  at org.apache.catalina.core.StandardContextValve.invoke(Unknown Source)
>  at org.apache.catalina.core.StandardPipeline.invokeNext(Unknown Source)
>  at org.apache.catalina.valves.CertificatesValve.invoke(Unknown Source)
>  at org.apache.catalina.core.StandardPipeline.invokeNext(Unknown Source)
>  at org.apache.catalina.core.StandardPipeline.invoke(Unknown Source)
>  at org.apache.catalina.core.ContainerBase.invoke(Unknown Source)
>  at org.apache.catalina.core.StandardContext.invoke(Unknown Source)
>  at org.apache.catalina.core.StandardHostValve.invoke(Unknown Source)
>  at org.apache.catalina.core.StandardPipeline.invokeNext(Unknown Source)
>  at org.apache.catalina.core.StandardPipeline.invoke(Unknown Source)
>  at org.apache.catalina.core.ContainerBase.invoke(Unknown Source)
>  at org.apache.catalina.core.StandardEngineValve.invoke(Unknown Source)
>  at org.apache.catalina.core.StandardPipeline.invokeNext(Unknown Source)
>  at org.apache.catalina.core.StandardPipeline.invoke(Unknown Source)
>  at org.apache.catalina.core.ContainerBase.invoke(Unknown Source)
>  at org.apache.catalina.connector.warp.WarpRequestHandler.handle(Unknown
> Source)
>  at org.apache.catalina.connector.warp.WarpConnection.run(Unknown Source)
>  at java.lang.Thread.run(Thread.java:498)
>
>
>
>