eclipse-ee4j / eclipse-ee4j/jersey

org.glassfish.jersey.server.mvc.jsp.RequestDispatcherWrapper#forward causes WARNING: Cannot set header. Response already committed in WebSphere

Open
#3,466 3 comments 0 reactions 0 assignees View on GitHub
Component: extensions Priority: Major Type: Bug
Dominant language
Java
Stars
730
Forks
382
PR merge metrics
No merged PRs in 30d

Description

org.glassfish.jersey.server.mvc.jsp.RequestDispatcherWrapper#forward method uses
dispatcher.forward(request, response);
to call jsp page/template. Since the control is handed over to jsp servlet the calling servlet is no longer able to set headers and throws warnings in WebSphere 9.0.1

[11/22/16 23:26:51:496 CST] 000000ab SRTServletRes W com.ibm.ws.webcontainer.srt.SRTServletResponse setIntHeader SRVE8094W: WARNING: Cannot set header. Response already committed.
[11/22/16 23:26:51:499 CST] 000000ab SRTServletRes W com.ibm.ws.webcontainer.srt.SRTServletResponse setHeader SRVE8094W: WARNING: Cannot set header. Response already committed.
[11/22/16 23:26:51:499 CST] 000000ab SRTServletRes W com.ibm.ws.webcontainer.srt.SRTServletResponse setStatus WARNING: Cannot set status. Response already committed.

Tomcat does not display such behavior.

I replaced forward with include and it fixed the problem. Suggested fix is

dispatcher.include(request, response);
#### Environment
AIX, WebSphere 9.0.1, Java 8, Servlet 3.0\. Jersey 2.24.1
#### Affected Versions
[2.24.1]

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.