每年在Java Web应用程序中执行一项任务

时间:2012-11-24 03:20:45

标签: java time timer

如何自动在Web应用程序中每年执行一项任务? Timer类对此有用吗?我也听说过Quartz?我在他们的页面注册但似乎不是免费的。谢谢你的帮助。

3 个答案:

答案 0 :(得分:3)

Quartz绝对是一个不错的选择,它是free和开源并使用Apache 2.0 License(您无需注册下载)。如果你在* nix环境中,你也可以简单地使用cron。

您也可以使用java.util.Timer但我只会在您的用例非常简单的情况下执行此操作,并且确保在启动时基于某种类型的持久层正确地重新启动Timer网络应用。

答案 1 :(得分:2)

如果每年只运行一次的工作真的应该完全自动化,请考虑与业务利益相关者核实。根据我的经验,很有可能会对时间表进行微小的更改(例如,今年工作的哪一天应该运行?)或者在这么长时间之后的工作步骤。

此外,未来还会有其他预定作业添加到系统中吗?如果不是 - 如果每年只有一份工作,是否值得将自动执行的开销(实施,测试,监控等)添加到系统中?不经常运行的东西很容易被遗忘,没有人注意到它什么时候坏了。

考虑这种选择:在应用中的某个位置添加一个按钮以手动启动作业,也可以在管理页面上启动。如果您的应用程序有仪表板或登录页面,请添加仅对某些用户可见的某些信息,例如管理员 - 例如:“X作业应该在2011年11月23日最后一次运行 - 请启动下一次运行在11/30/2012之前“。

答案 2 :(得分:1)

我建议你使用像cron这样的东西。您的要求与UNIX cron守护程序的活动非常相似。有一个java库提供了相同的功能,称为cron4j(http://www.sauronsoftware.it/projects/cron4j/)。

以下是您可以使用的一些调度程序。