Response already committed.

在生产环境中,系统日志非常高频度地出现下面的告警信息:
[09-11-26 16:24:26:389 GMT+08:00] 00185db6 SRTServletRes W   WARNING: Cannot set header. Response already committed.

这个是WAS抛出的警告,意思是http response已经提交(通过调用了response.flushBuffer,这时准备或者已经发送部分数据到客户端了),而这时候还有程序试图去改写http 报文的头部信息。
我们的程序应该不会去显式的调response.flushBuffer,不过有几个地方很容易出现这样的问题:

1)response.sendRedirect()重定向跳转的地方
调了重定向,但是没有return;下面的程序改写了header
2)<jsp:include page="××"  flush="true" />
这里的flush意思就是是否立即输出include page指定的html,如果在这段代码之后,还有其他代码试图改写header,比如调用response.setHeader,或者下面还有include 其他page,而其他page最开始,习惯性的通过<%@ page 指令修改了某些和header有关的内容,这个在我们代码里最有可能
解决办法:找到这样的代码,最好把flush="true" 去掉,或者确保它下面没有其他代码会去修改header

你可能感兴趣的:(html)