2012-09-13 37 views
0

我希望用戶發表帖子,處理帖子中的數據並將請求轉發到jsp頁面。 jsp頁面被髮回給用戶,但是然後服務器應該做一個工作。這項工作需要很長時間,所以用戶不應該等待。關閉servlet中的http連接後執行作業

protected void doPost(HttpServletRequest request, HttpServletResponse response) { 
    //... get posted data ... 
    request.getRequestDispatcher("/page.jsp").forward(request, response); 
    //do-someting 
} 

我想要在連接關閉並且用戶獲得page.jsp後完成「do-something」。當然,「do-something」完全像服務器一樣更新數據庫等,所以服務器即使在用戶離開頁面後也能繼續工作。在轉發到jsp頁面之後,我嘗試刷新並關閉servlet中的輸出流,但這會導致異常。在jsp頁面中刷新和關閉也會導致異常。我怎樣才能做到這一點?

回答

0

如果你的工作(做某事)是完全獨立的東西應該在JSP中顯示,那麼你可以使用下列之一:

  • 定時器
  • 線程(在一個線程池)
  • 更強大的庫,如Quartz這將給你強大的調度能力