电竞比分网-中国电竞赛事及体育赛事平台

分享

異步AJAX可能引起的ResponseFacade.sendError

 昵稱2829056 2010-08-21

異常信息摘要:
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異步處理的思路使得多個(gè)請(qǐng)求之間的合作失敗, 更清楚地說, 是多個(gè)請(qǐng)求之間的數(shù)據(jù)有依賴性, 但異步的機(jī)制使得依賴者和被依賴者的數(shù)據(jù)獲取的先后不一致, 只要有此種交錯(cuò)請(qǐng)求的存在, Server端就會(huì)報(bào)出此異常:發(fā)送數(shù)據(jù)出錯(cuò)。

我設(shè)想的解決方案:
方案一:
    當(dāng)有依賴關(guān)系的請(qǐng)求存在時(shí),設(shè)定被依賴的請(qǐng)求為同步方式,這樣就可以保證被依賴者的數(shù)據(jù)在成功獲取后,再向下執(zhí)行后續(xù)請(qǐng)求。當(dāng)然,這種解決方案有一些限制,只有在使用原始XMLHttpRequest時(shí)才能夠設(shè)置同步/異步。
方案二:
    通過別的方式盡可能的改掉請(qǐng)求間的依賴關(guān)系,使得依賴請(qǐng)求能夠直接從Server端獲取數(shù)據(jù)。

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多