在后台运行服务器上的定期任务
在ServeletContext中存储一个java.util.Timer(或更好的ScheduledExecutor)实例是可行和有效的。在Servlet的init()调用中创建它,并且所有的servlet都可以向它添加TimerTasks。
适用于很多系统的一种通用的方式是简单地执行一个cron作业,它会对您的应用程序执行周期性wget。
我无法回答tomcat/jetty的东西,但我用基于Python的web应用程序完成了类似的事情。
我通常只运行一个单独的应用程序来完成所需的周期性任务。如果网站和应用程序之间需要互操作,那么通过某种API(使用诸如XML-RPC/unix套接字/等等)甚至只是通过数据库层就可以进行通信,如果这样做足够的话。
希望有所帮助。
如果想要在java端保留所有内容,请查看Quartz。
它处理故障转移和细粒度的作业重新分区,具有cron作业的相同灵活性。
作为Java的Quartz框架也直接集成到正在运行的应用程序服务器中,并为您提供细粒度的控制,否则您很难用Java来实现Cron – 2009-01-19 02:52:22
石英声音很好,但对我的目的来说有点矫枉过正。 – 2009-01-19 11:30:34
如果你想使用cron作业,但没有到开发系统的管理权限,您可以通过执行命令做一个用户的crontab:
crontab -e
它在默认情况下大多数系统使用VI ,但可以将其更改为通过您选择的编辑器:
export EDITOR=/usr/local/bin/my_editor
然后,执行的crontab -e命令将启动crontab文件,在编辑器中。保存后,更改将被重新提交到系统的cron中。
只需在服务器上运行cron作业,无需让它对您的应用执行wget。 – 2009-01-19 00:04:02