2013-12-22 105 views
3

我有一個運行在Glassfish服務器上的java web應用程序。使用war文件我用來在各種服務器上部署應用程序。現在爲了讓我的應用程序的數據庫更新,我想定期運行一些類(應用程序內部),而無需任何用戶交互(不應取決於應用程序是否正在運行/當前用戶/會話)。我已經看到,使用一些定時器TimerTask類我可以定期運行任何工作。但如何初次初始化它?在Java Web應用程序中定期更新數據庫的最佳方法

請把你的想法放在如何完成這個過程。

回答

3

使用Job scheduler。考慮Quartz http://quartz-scheduler.org/並在程序啓動時啓動它。關於使用調度程序的好處是您的程序更易於維護,並且您可以輕鬆創建其他新作業。

1

創建一個servlet並使其在啓動時加載。我想你可以在那裏初始化你的任務。

+0

ServletContextListener會更好。 – Chase

1

石英是一種很好的解決方案,就像已經提出的那樣。但是,如果你需要更多的東西精簡版的重量,我會看看的安排執行:

http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/ScheduledExecutorService.html

它比石英不太靈活,但你並不需要添加任何依賴,它可能是它足夠滿足您的需求。

關於啓動;我通常使用Spring來連接我的應用程序及其依賴項。因此,啓動調度程序和運行計劃任務是不容易的。

1

答案根據您使用的Java EE版本而變化。在Java EE 5和以前的版本中,您可以使用ServletContextListener在使用Timer API的部署時運行代碼(調用EJB)。在Java EE 6 +中,您可以使用@Schedule註釋,該註釋使用註釋和cron類型語法在部署時調度您的任務。

當然,如果您不需要自動部署時間安排,那麼您只需創建一些Web窗體,在提交時調用EJB,然後以編程方式調用Timer API。

欲瞭解更多信息the Java EE tutorial

相關問題