当前位置:编程学习 > 网站相关 >>

求救:WAS日志总是打印 WARNING: Cannot set status. Response already committed

WAS部署了一套应用,由于用户比较庞大,服务器压力很大,上线3个月,已经宕机4、5次了,查看日志,老有警告
[09-8-18 15:30:28:343 CST] 00001d9c SRTServletRes W   WARNING: Cannot set status. Response already committed.
[09-8-18 15:30:28:343 CST] 00001d9b SRTServletRes W   WARNING: Cannot set status. Response already committed.
[09-8-18 15:30:28:343 CST] 00001d9c SRTServletRes W   WARNING: Cannot set header. Response already committed.
[09-8-18 15:30:28:343 CST] 00001d9b SRTServletRes W   WARNING: Cannot set header. Response already committed.
[09-8-18 15:30:28:343 CST] 00001d9c SRTServletRes W   WARNING: Cannot set status. Response already committed.
[09-8-18 15:30:28:343 CST] 00001d9c SRTServletRes W   WARNING: Cannot set header. Response already committed.
[09-8-18 15:30:28:343 CST] 00001d9c SRTServletRes W   WARNING: Cannot set status. Response already committed.
[09-8-18 15:30:28:343 CST] 00001d9c SRTServletRes W   WARNING: Cannot set header. Response already committed.
[09-8-18 15:30:28:359 CST] 00001d9c SRTServletRes W   WARNING: Cannot set status. Response already committed.
[09-8-18 15:30:28:359 CST] 00001d9c SRTServletRes W   WARNING: Cannot set header. Response already committed.

应用使用的是 Struts2.0 Spring2.5  ,请高手帮忙! --------------------编程问答-------------------- 有人知道是什么问题吗? --------------------编程问答-------------------- 代码写的有问题。当我们往 out 里面写过东西了就不能再 getWriter 或 getOutputStream() 又来写东西,也不能 sendRediect;反过来,如果 sendRedirect 就不能再 out.write 或 getWriter /getoutputStream 之类的再写响应内容,因为已经通过 sendRedirect 响应过了。

这个问题两个可能导致 IllegalStateException,从你的 Response already committed 看来,好像是下面的第一点:

一、
HTTP 的工作中,
一种响应是正常的,也就是当你有答复时,往输出给客户端浏览器的 socket 中写出  HTTP HEAD 内容 + HTTP Body 内容。

另一种是发送重定向,这个时候你只能往 socket 中写出 HTTP HEAD 内容,BODY 是不允许的,因为 redirect 表示答复由另一个 URL 给出,所以就不要再多此一举了。

上面两种方式只能取其一。

二、你不能用 JSP 内置变量 out 的同时又 getWriter 或 get response 的 output stream。
--------------------编程问答--------------------
引用 2 楼 humanity 的回复:
代码写的有问题。当我们往 out 里面写过东西了就不能再 getWriter 或 getOutputStream() 又来写东西,也不能 sendRediect;反过来,如果 sendRedirect 就不能再 out.write 或 getWriter /getoutputStream 之类的再写响应内容,因为已经通过 sendRedirect 响应过了。

这个问题两个可能导致 Ille……

正解
补充:企业软件 ,  WebSphere
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,