2012-09-18 141 views
2

我有一個彈簧的portlet MVC應用程序。我有一個jsp,它使用Ajax請求向資源URL發出GET請求,然後使用Spring Jackson映射器(MappingJacksonJsonView)類返回json。 GET請求非常慢,可能需要幾秒鐘才能執行。我注意到一個用例;jquery的AJAX請求:的getOutputStream()

  1. 我點擊AJAX提交鏈接在我的應用程序
  2. 我刷新頁面請求完成
  3. 我重複上面的步驟開始投擲illegalstatexception

    所致

  4. 我的服務器日誌前: java.lang.IllegalStateException:getOutputStream方法()已經被調用,這種響應 在org.apache.catalina.connector.Response.getWriter(Response.java:611) 在org.apache.catalina.connector.ResponseFacade.getWriter(ResponseFacade.java:198) 在javax.servlet.ServletResponseWrapper.getWriter(ServletResponseWrapper.java:112)

因爲春天是負責創建和刪除輸出讀者和作家我無法捕捉到非法的錯誤,所以我發現很難找出確切問題發生的地方。

任何建議或幫助將是appreciated.Thanks。

回答

1

答案 - 正在發生以下情況。我想我可以把它歸結爲一個低影響的問題。

當瀏覽器中打開一個插座,使一個Ajax請求然而它然後終止打開的套接字(通過關閉瀏覽器或移動到另一頁。)接收來自所述服務器的響應發生之前。與此同時,服務器正在處理請求並嘗試將輸出寫回瀏覽器,但瀏覽器已關閉Socket並繼續前進。

+0

你是如何解決這個問題的? – dit