2012-02-20 67 views

回答

1
Timer timer = new Timer(); 

爲每個DB條目創建一個計時器和任務,像這樣。

TimerTask task = new TimerTask(){ 
    public void run() 
    { 
    //execute the code for every 10 mins 
    } 
} 
timer.scheduleAtFixedRate(task, 0, 10 * 60 * 1000); // period is 10 mins 
1

這取決於你的應用程序。

如果您僅使用servlet和jsps,並且不使用EJB,集羣等,只需創建java.util.Timer並在每次更新數據庫時添加任務即可。定時器將根據調度運行任務。

如果你正在開發更「嚴肅」的應用程序,你可以使用Quartz。

其他可能的方法是使用延遲的JMS消息。詳情請參閱here

接下來,最複雜的方法是使用JCA。您可以創建對Application Server的線程輪詢和計時器具有「合法」訪問權限的JCA組件。

+0

這也取決於延遲處理是否必須得到保證。如果系統必須保證處理完畢,則計時器必須是持久性的,否則系統必須記錄該作業處理了哪個條目,以便在最壞的情況下(例如崩潰)重新啓動計時器。 – ewernli 2012-02-20 13:50:00

+0

感謝您的回覆.. !! 是的,我只使用JSP和Servlet。我現在想詳細說明我的問題,請幫助我,因爲我是這個新手。 我真正想要做的是,在數據庫中的每一個條目我也想記錄數據庫中進入的時間(比如說16:00)。 然後在10分鐘後(在16:10)我想執行一些代碼。 如何具體做到這一點?如果可能的話,附加一些代碼鏈接 。 謝謝.. .. !!! – 2012-02-21 10:42:01

0

這取決於您的「用戶進入一行後10分鐘」的準確程度。關鍵是將要執行的'任務'綁定到觸發器數據。因此,您可能需要爲數據添加某種事務ID。然後,您可以爲該交易數據添加一個時間戳,然後定期檢查(例如,每15秒)一次,如果發現任何剛剛通過其10分鐘標記的事務,則執行其下一步。

相關問題