eclipse-ee4j / eclipse-ee4j/jersey
org.glassfish.jersey.server.mvc.jsp.RequestDispatcherWrapper#forward causes WARNING: Cannot set header. Response already committed in WebSphere
- 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
Assessment
This issue has not been assessed yet.