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
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值