2009-07-28 153 views
1

我有一個tomcat 6.20實例正在運行,並且想通過後臺線程發送郵件來阻止郵件發送功能阻止請求。tomcat後臺線程

有什麼辦法可以在後臺執行線程,同時仍然允許正常的頁面流發生。

該應用程序是用ICEfaces編寫的。

謝謝。

回答

3
  1. 使用java.util.concurrent.Executors.newCachedThreadPool(或其他工廠方法之一)在您的控制器/ servlet的初始化方法的Executor創建。
  2. 當請求時,包裹郵件發送邏輯在java.lang.Runnable
  3. 提交RunnableExecutor

這將在後臺執行的發送。請記得在啓動時創建一個Executor,並在所有請求之間共享;不要每次都創建一個新的Executor(你可以,但會有點慢和浪費)。

+0

這應該是j.u.c.Executors.newCachedThreadPool(帶有s),但除此之外:同意 – WMR 2009-07-28 14:22:49

0

我找到了出路。這些標籤

@PostConstruct() 

@PreDestroy() 

創建2種方法,在你的servlet返回void並接受任何參數。 將第一個標記放置在第一個方法的正上方,將第二個標記放置在第二個標記的上方。

的標籤

的@PostConstruct方法由容器之前實現類開始響應Web服務客戶端稱爲Essense。

@PreDestroy方法在端點從操作中移除之前由容器調用。

在PostConstruction()方法中,使用runnable接口創建線程,並使其運行在無限循環中,除非某個布爾變量的值爲false。

使用PreDestroy()方法將布爾變量設置爲false。