如何自动在Web应用程序中每年执行一项任务? Timer类对此有用吗?我也听说过Quartz?我在他们的页面注册但似乎不是免费的。谢谢你的帮助。
答案 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/)。
以下是您可以使用的一些调度程序。