簡體   English   中英

在Java Web應用程序中定期更新數據庫的最佳方法

[英]Best Way to Update Database Periodically in Java Web Application

我有一個在Glassfish服務器上運行的java Web應用程序。 使用war文件我用於在各種服務器中部署應用程序。 現在為了保持我的應用程序的數據庫更新,我想定期運行一些類(在應用程序內部)而不進行任何用戶交互(不應該依賴於應用程序正在運行或不運行/當前用戶/會話)。 我已經看到使用一些TimerTimerTask類我可以定期運行任何工作。 但是如何首次初始化呢?

請考慮如何完成此過程。

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

創建一個servlet並在啟動時加載它。 我認為你可以在那里初始化你的任務。

Quartz是一個很好的解決方案。 但是如果你需要更輕量級的東西,我會看看預定的執行者:

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

它不如Quartz靈活,但您不需要添加任何依賴項,它可能足以滿足您的需求。

關於啟動; 我通常使用Spring來連接我的應用程序及其依賴項。 因此,啟動調度程序和運行計划任務是沒有道理的。

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

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

有關更多信息,請參閱Java EE教程

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM