4

在 tomcat/jetty 服务器上运行定期任务(如守护线程)的最佳/最简单方法是什么?如何启动线程?是否有一个简单的机制或者这是一个坏主意?

4

5 回答 5

9

如果想将所有内容都保留在 java 端,请查看Quartz
它处理故障转移和作业的细粒度重新分区,具有与 cron 作业相同的灵活性。

于 2009-01-19T01:17:22.850 回答
4

在ServeletContext 中存储一个java.util.Timer(或更好的ScheduledExecutor)实例是可行且有效的。在 Servlet 的 init() 调用中创建它,您的所有 servlet 都可以将 TimerTasks 添加到它。

于 2009-01-19T02:22:28.927 回答
2

适用于许多系统的一种通用方法是简单地拥有一个对您的应用程序执行定期 wget 的 cron 作业。

于 2009-01-19T00:00:54.093 回答
0

我无法回答 tomcat/jetty 的问题,但我已经用基于 Python 的网络应用程序做过类似的事情。

我通常只运行一个单独的应用程序来执行所需的定期任务。如果网站和应用程序之间需要互操作,则可以通过某种 API(使用 XML-RPC/unix 套接字/等)或仅通过数据库层进行通信,如果这足够的话。

希望有帮助。

于 2009-01-19T00:24:55.217 回答
0

如果您想使用 cron 作业但没有对开发系统的管理访问权限,您可以通过执行以下命令来执行用户 crontab:

crontab -e

它在大多数系统上默认使用 vi,但您可以通过以下方式将其更改为您选择的编辑器:

export EDITOR=/usr/local/bin/my_editor

然后,执行 crontab -e 命令将在您的编辑器中启动您的 crontab 文件。保存后,更改将提交回系统的 cron。

于 2009-01-19T21:05:09.923 回答