[ 
https://issues.apache.org/jira/browse/COCOON-2150?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12558427#action_12558427
 ] 

Grzegorz Kossakowski commented on COCOON-2150:
----------------------------------------------

I isolated the problem and committed additional checks that if uncommented will 
exhibit the problematic behaviour.

The offending code snippet is (ServletServiceContext:507):
                if (se != null || (status < 200 || status >= 400)) {
                    wrappedResponse.reset();
                    NamedDispatcher _super = (NamedDispatcher) 
ServletServiceContext.this.getNamedDispatcher(SUPER);
                    if (_super != null) {
                        _super.forward(request, wrappedResponse);
                    } else {
                        wrappedResponse.getWriter().println("Resource not 
found");
                        
wrappedResponse.setStatus(HttpServletResponse.SC_NOT_FOUND);
                        throw se;
                    }
                }

Since this code resets response (which is unavoidable) I think we will need to 
buffer response and let it commit until ServletServiceContext checks are done. 
At least we would need to buffer response if status code is 404 (and possibly 
other of similar meaning).

WDYT?

> Error on resetting response
> ---------------------------
>
>                 Key: COCOON-2150
>                 URL: https://issues.apache.org/jira/browse/COCOON-2150
>             Project: Cocoon
>          Issue Type: Bug
>          Components: - Servlet service framework
>    Affects Versions: 2.2-dev (Current SVN)
>            Reporter: Jörg Heinicke
>            Priority: Minor
>             Fix For: 2.2-dev (Current SVN)
>
>
> This is the exception shown on the console:
> java.lang.IllegalStateException: Committed
>         at org.mortbay.jetty.Response.resetBuffer(Response.java:855)
>         at org.mortbay.jetty.Response.reset(Response.java:834)
>         at 
> javax.servlet.ServletResponseWrapper.reset(ServletResponseWrapper.java:182)
>         at 
> org.apache.cocoon.servletservice.ServletServiceContext$PathDispatcher.forward(ServletServiceContext.java:576)
>         at 
> org.apache.cocoon.servletservice.ServletServiceContext$PathDispatcher.forward(ServletServiceContext.java:545)
>         at 
> org.apache.cocoon.servletservice.spring.ServletFactoryBean$ServiceInterceptor.invoke(ServletFactoryBean.java:230)
>         at 
> org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
>         at 
> org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)
>         at $Proxy2.service(Unknown Source)
>         at 
> org.apache.cocoon.servletservice.DispatcherServlet.service(DispatcherServlet.java:102)
>         at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
>         at 
> org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:459)
> It seems to be thrown whenever the response object is reseted after the 
> actual response has been sent by the sitemap error handler. In this case 
> reset is no longer possible since the response has already been committed as 
> stated in the error message.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to