异常信息摘要: 2010-8-16 9:47:34 org.apache.catalina.core.StandardWrapperValve invoke 严重: Servlet.service() for servlet default threw exception java.lang.IllegalStateException at org.apache.catalina.connector.ResponseFacade.sendError(ResponseFacade.java:407) at org.apache.struts2.dispatcher.Dispatcher.sendError(Dispatcher.java:770) 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:235) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:104) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:261) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:581) at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447) at java.lang.Thread.run(Thread.java:619) 出现此异常的原因之一: AJAX异步处理的思路使得多个请求之间的合作失败, 更清楚地说, 是多个请求之间的数据有依赖性, 但异步的机制使得依赖者和被依赖者的数据获取的先后不一致, 只要有此种交错请求的存在, Server端就会报出此异常:发送数据出错。 我设想的解决方案: 方案一: 当有依赖关系的请求存在时,设定被依赖的请求为同步方式,这样就可以保证被依赖者的数据在成功获取后,再向下执行后续请求。当然,这种解决方案有一些限制,只有在使用原始XMLHttpRequest时才能够设置同步/异步。 方案二: 通过别的方式尽可能的改掉请求间的依赖关系,使得依赖请求能够直接从Server端获取数据。 |
|