在tomcat / jetty服务器上运行定期任务(如守护程序线程)的最佳/最简单方法是什么?我该如何启动线程?有一个简单的机制,还是一个坏主意?
答案 0 :(得分:9)
如果想要保留java端的所有内容,请查看Quartz 它处理故障转移和细粒度的作业重新分区,具有相同的cron作业灵活性。
答案 1 :(得分:4)
在ServeletContext中存储java.util.Timer(或更好的ScheduledExecutor)实例是可以有效的。在Servlet的init()调用中创建它,所有的servlet都可以向它添加TimerTasks。
答案 2 :(得分:2)
适用于许多系统的一种通用方法就是让一个cron作业对你的应用程序进行定期的wget。
答案 3 :(得分:0)
我无法回答tomcat / jetty的内容,但我已经使用基于Python的网络应用程序做了类似的事情。
我通常只运行一个单独的应用程序来执行所需的定期任务。如果网站和应用程序之间需要互操作,那么这种通信可以通过某种API(使用类似XML-RPC / unix套接字/等)或甚至仅通过数据库层进行,如果这是足够的。
希望有所帮助。
答案 4 :(得分:0)
如果要使用cron作业但没有对开发系统的管理访问权限,可以通过执行命令来执行用户crontab:
crontab -e
在大多数系统上默认使用vi,但您可以通过以下方式将其更改为您选择的编辑器:
export EDITOR=/usr/local/bin/my_editor
然后,执行crontab -e命令将在编辑器中启动crontab文件。保存后,更改将提交回系统的cron。