2009-01-18 96 views

回答

4

在ServeletContext中存儲一個java.util.Timer(或更好的ScheduledExecutor)實例是可行和有效的。在Servlet的init()調用中創建它,並且所有的servlet都可以向它添加TimerTasks。

2

適用於很多系統的一種通用的方式是簡單地執行一個cron作業,它會對您的應用程序執行週期性wget。

+0

只需在服務器上運行cron作業,無需讓它對您的應用執行wget。 – 2009-01-19 00:04:02

0

我無法回答tomcat/jetty的東西,但我用基於Python的web應用程序完成了類似的事情。

我通常只運行一個單獨的應用程序來完成所需的週期性任務。如果網站和應用程序之間需要互操作,那麼通過某種API(使用諸如XML-RPC/unix套接字/等等)甚至只是通過數據庫層就可以進行通信,如果這樣做足夠的話。

希望有所幫助。

9

如果想要在java端保留所有內容,請查看Quartz
它處理故障轉移和細粒度的作業重新分區,具有cron作業的相同靈活性。

+1

作爲Java的Quartz框架也直接集成到正在運行的應用程序服務器中,併爲您提供細粒度的控制,否則您很難用Java來實現Cron – 2009-01-19 02:52:22

+0

石英聲音很好,但對我的目的來說有點矯枉過正。 – 2009-01-19 11:30:34

0

如果你想使用cron作業,但沒有到開發系統的管理權限,您可以通過執行命令做一個用戶的crontab:

crontab -e 

它在默認情況下大多數系統使用VI ,但可以將其更改爲通過您選擇的編輯器:

export EDITOR=/usr/local/bin/my_editor 

然後,執行的crontab -e命令將啓動crontab文件,在編輯器中。保存後,更改將被重新提交到系統的cron中。