我的應用程序中有一個servlet過濾器,我需要從中調用一個Web服務,這需要一些時間來返回響應,然後將響應存儲在會話中稍後使用。我希望在這個時間過程發生的時候,我的過濾器應該繼續運行,並且應該繼續調用其他過濾器,以便不影響性能。在servlet過濾器產生的單獨線程中運行花費時間
所以這就是我在doFilter()裏面做的事情。爲此創建一個不同的線程。
log.debug("start filter");
CustomThread ct=new CustomThread();
ct.start(); //invoke web service in run()
log.debug("continuing with filter");
考慮到1000個用戶將會碰到應用程序的事實,這種方法是否能夠正常工作。這種情況在某些情況下會失敗嗎? 請建議,如果我需要採取不同的路線。
是的,這正是我的問題所在。在這種情況下,線程數量將翻倍。我從未使用過ThreadPoolExecutor。所以我需要看看它。感謝您的建議:) – nevin 2013-03-02 18:03:02
我也使用struts 2和spring security 3.現在我需要在用戶成功通過身份驗證後執行此任務。因此,一旦用戶成功通過身份驗證,我可以在安全配置中將defaultTargetUrl設置爲可執行此任務的某個操作。據我所知,struts將爲每個請求創建一個單獨的動作實例。這會解決我的目的嗎?我不想冒任何風險,因爲這很關鍵。因此,問。 – nevin 2013-03-03 14:43:59