2017-02-21 44 views
0

客戶端發送請求並捕獲超時異常。但是,服務器仍在處理請求並將其保存到數據庫。在此之前,客戶端已經發送了第二個請求,將數據庫中的記錄翻倍。我如何防止這種情況發生?我使用Java servlets和JavaScript。在java中處理客戶端請求超時

+0

錯誤,增加超時? – EJP

回答

0

幾點建議: -

1)增加客戶端超時。

2)使服務器更高效,以便更快響應。

3)在返回主響應之前,讓服務器響應中間「我正在處理它」的響應。

4)服務器在響應客戶端之前是否需要執行全部的工作,或者可以將某些服務器卸載到單獨的進程以供稍後運行?

0

客戶端發送請求並捕獲超時異常。但是服務器仍在處理請求

使servlet生成一些輸出(可以只是空格)並每隔一段時間刷新一次流(例如每隔15秒)。

如果客戶端的連接已關閉,寫入操作將失敗並出現套接字異常。

這種情況發生之前,客戶端已經發出該數據庫

使用數據庫的原子上加倍記錄,例如,一個獨特的密鑰的第二請求。通過創建一個獨特的記錄(可能處於某種「未完成」狀態)來啓動流程,如果記錄已經存在,它將失敗。