Code Bye

tomcat里的日志 localhost.***.log中报的一个错误,Cannot call sendError() after the respon

 

错误信息如下
Nov 24, 2012 6:43:17 PM org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet [default] in context with path [] threw exception
java.lang.IllegalStateException: Cannot call sendError() after the response has been committed
at org.apache.catalina.connector.ResponseFacade.sendError(ResponseFacade.java:451)
at org.apache.struts2.dispatcher.Dispatcher.sendError(Dispatcher.java:752)
at org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:505)
at org.apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOperations.java:77)
at org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:91)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:929)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1002)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:585)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:662)
采用的是SSH,不影响使用,但不知道到底是哪边的问题,在线等。。。。

大侠莫非都去吃饭了?

10分
应该URL路径有问题吧
SEVERE: Servlet.service() for servlet [default] in context with path [] threw exception
response 响应无效,把servlet代码贴出来看看,,最好自己手动调试,找原因、、、
引用 3 楼 ch656409110 的回复:

response 响应无效,把servlet代码贴出来看看,,最好自己手动调试,找原因、、、

关键是我也不知道是哪个类出的错,每天大于1w次的请求,会报10次左右的这种错,无从下手,给个思路就好


80分
org.apache.catalina.core.StandardWrapperValve invoke
今天写代码,竟然接连遇到这个异常好几次。debug几个小时才弄明白,晕。
上网找了些拼凑下做个总结,不保证准确无误,记下来仅供参考。
以下是错误原因:
1.servlet或jsp中,重复调用response的 getOutputStream(),response.getWriter()方法
2.form表单里没有 method=”post” action=””参数
3.看JDBC操纵数据库的代码,仔细看,例如调用的对象的属性为null。
           Connection conn=null; 之后之就调用了conn.??的方法
           我就时错在这里
仅供参考!

我猜测 Ajax请求之后, response.getWriter()获取PrintWriter 写数据之后没有关闭。。然后1w次的请求,会报10次左右的这种错,,这其实蛮正常的。。

引用 5 楼 ch656409110 的回复:

org.apache.catalina.core.StandardWrapperValve invoke
今天写代码,竟然接连遇到这个异常好几次。debug几个小时才弄明白,晕。
上网找了些拼凑下做个总结,不保证准确无误,记下来仅供参考。
以下是错误原因:
1.servlet或jsp中,重复调用response的 getOutputStream(),response.getWriter()……

确实应该是第一种,验证码我自己写的,重复调用response的 getOutputStream(),response.getWriter()方法
至于蛮正常的是什么意思,是指不担心吗

引用 6 楼 njutmars 的回复:

引用 5 楼 ch656409110 的回复:org.apache.catalina.core.StandardWrapperValve invoke
今天写代码,竟然接连遇到这个异常好几次。debug几个小时才弄明白,晕。
上网找了些拼凑下做个总结,不保证准确无误,记下来仅供参考。
以下是错误原因:
1.servlet或jsp中,重复调用response的 ge……

在实际项目运营过程中报错是难免的,只要不是致命的错误,不影响整个系统的错误,不用太担心(不能说不用管),  百分之零点一的概率这个几率已经很小了,

之所以说蛮正常只是不想让你担心呗。

引用 7 楼 ch656409110 的回复:

引用 6 楼 njutmars 的回复:引用 5 楼 ch656409110 的回复:org.apache.catalina.core.StandardWrapperValve invoke
今天写代码,竟然接连遇到这个异常好几次。debug几个小时才弄明白,晕。
上网找了些拼凑下做个总结,不保证准确无误,记下来仅供参考。
以下是错误原因:
1.servlet或j……

嗯,嘿嘿,多谢了,问题解决了,有点强迫症,看不得报错

请问是怎么解决的,我也遇到这个情况了,而且我不知道是在哪里报的错
可能是你还没去请求得到响应信息就会出现这种原因
public InputStream sendResultRequestGet(String requestAddress, String JSESSIONID) throws XCFH_CheckException {

InputStream in = null;
try {
System.out.println(“requestAddress = ” + requestAddress);
URL url = new URL(requestAddress);
HttpURLConnection httpconection = (HttpURLConnection) url.openConnection();
httpconection.setDoInput(true);
httpconection.setDoOutput(true);
httpconection.setRequestMethod(“GET”);
httpconection.setUseCaches(false);
httpconection.setRequestProperty(“User-Agent”,
“Mozilla/5.0 (X11; U; Linux x86_64; zh-CN; rv:1.9.2.9) Gecko/20100827 Red Hat/3.6.9-2.el6 Firefox/3.6.9 “);
System.out.println(JSESSIONID + “; path=/”);
httpconection.setRequestProperty(“Cookie”, “JSESSIONID=” + JSESSIONID + “; path=/”);
System.out.println(“in大小 = ” + in.available());
in = httpconection.getInputStream();//获取发票验真返回信息
return in;
} catch (Exception e) {
// TODO: handle exception
throw new XCFH_CheckException(requestAddress, e);
}
}
向上面的打印信息就是错误原因,因为还没去请求得到响应信息就打印流大小,当然会报错,应该在接收完响应信息后再去打印流的大小就不会报错了


CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明tomcat里的日志 localhost.***.log中报的一个错误,Cannot call sendError() after the respon