2011-09-28 89 views
1

如果我有一個長期運行的請求處理程序,用戶點擊瀏覽器的停止按鈕,我該如何終止處理程序,以便它不會繼續工作?我想一些簡單的像提高基於從另一個線程看門狗(因爲他們進來,誰給了連接),檢查客戶端連接狀態的線程中斷,但也許有更好的解決方案。如何停止/中斷servlet處理程序?

回答

0

如果用戶點擊停止按鈕你永遠不會知道它除了作爲連接復位。你沒有任何機會提出線程中斷:這意味着從瀏覽器到服務器中的另一個線程的另一個通信不會發生。

2

另一種更簡單的方法是使該長時間運行的過程異步,使用ExecutorServicejava.util.concurrent。當聯邦快遞準備就緒時,立即返回並給予客戶一種獲得響應的方式。

的Servlet不應該執行的進程,同步或者非同步。他們的監聽HTTP請求,綁定和驗證輸入參數,路由到適當的服務,以滿足該請求,並編組到相應的視圖的響應。

0

處理此問題的一種方法是分別實現long work/req/proc並將狀態標誌暴露給狀態。選項。現在從你的servlet異步調用它。當客戶端按STOP時,來servlet檢查運行狀態並在需要時中斷並更新用戶。