異常信息摘要: 2010-8-16 9:47:34 org.apache.catalina.core.StandardWrapperValve invoke 嚴(yán)重: 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) 出現(xiàn)此異常的原因之一: AJAX異步處理的思路使得多個請求之間的合作失敗, 更清楚地說, 是多個請求之間的數(shù)據(jù)有依賴性, 但異步的機(jī)制使得依賴者和被依賴者的數(shù)據(jù)獲取的先后不一致, 只要有此種交錯請求的存在, Server端就會報出此異常:發(fā)送數(shù)據(jù)出錯。 我設(shè)想的解決方案: 方案一: 當(dāng)有依賴關(guān)系的請求存在時,設(shè)定被依賴的請求為同步方式,這樣就可以保證被依賴者的數(shù)據(jù)在成功獲取后,再向下執(zhí)行后續(xù)請求。當(dāng)然,這種解決方案有一些限制,只有在使用原始XMLHttpRequest時才能夠設(shè)置同步/異步。 方案二: 通過別的方式盡可能的改掉請求間的依賴關(guān)系,使得依賴請求能夠直接從Server端獲取數(shù)據(jù)。 |
|