在Websphere 8.5上使用Spring 3.x时已经提交的响应

Ore*_*zer 6 java websphere spring http-headers servlet-filters

在处理请求后添加/更新响应头时,我收到以下警告:

com.ibm.ws.webcontainer.srt.SRTServletResponse setHeader SRVE8094W: WARNING: Cannot set header. Response already committed. 
Run Code Online (Sandbox Code Playgroud)

我试图通过调用操纵头httpServletResponse.setHeader()httpServletResponse.addHeader()后一个Servlet过滤器内filterChain.doFilter()或通过代码的postHandle春天拦截.

我在websphere 8.5上使用spring 3.x运行我的webapp时遇到了这个问题.

这个问题没有在tomcat 7.0上重现,因此我的猜测是它与Websphere相关.问题没有在纯servlet应用程序中重现,因此我的猜测是它与Spring相关.

我很熟悉

ShallowEtagHeaderFilter在WAS8应用服务器下无法运行

无法在JSP中设置标头.响应已经提交

但我正在寻找一个"更清洁"的解决方案.

有人可以帮我这个吗?

小智 -1

Websphere 严格遵循 J2EE 标准,因此在 Tomcat 中有效的内容不一定在 Websphere 中也有效。在我的项目中,我遇到了很多 Websphere 特有的异常/错误,但在 Tomcat 中却很管用。我建议你在控制器中设置标题。另一种替代方法是不刷新控制器中的输出流(如果您已明确执行此操作)。