【发布时间】:2012-11-24 03:20:44
【问题描述】:
如何在Web应用程序中自动执行每年的任务? Timer 类对此有帮助吗?我也听说过石英?我在他们的页面上注册了,但似乎不是免费的。感谢您的帮助。
【问题讨论】:
如何在Web应用程序中自动执行每年的任务? Timer 类对此有帮助吗?我也听说过石英?我在他们的页面上注册了,但似乎不是免费的。感谢您的帮助。
【问题讨论】:
Quartz 绝对是一个不错的选择,它是free 并且是开源的并且使用Apache 2.0 License(您无需注册即可下载)。如果您在 *nix 环境中,也可以简单地使用 cron。
您也可以使用java.util.Timer,但我只会在您的用例非常琐碎的情况下这样做,并且您确保在 Web 应用启动时基于某种类型的持久层正确地重新启动您的 Timer。
【讨论】:
我建议你使用类似 cron 的东西。您的要求与 UNIX cron 守护程序的活动非常相似。有一个 java 库提供相同的功能,称为 cron4j (http://www.sauronsoftware.it/projects/cron4j/)。
以下是您可以使用的一些调度程序。
【讨论】:
考虑与业务利益相关者核实一年只运行一次的工作是否真的应该完全自动化。根据我的经验,很可能会对日程安排(例如,今年应该在一周中的哪一天运行?)或在这么长时间后对工作的步骤进行细微的更改。
另外,将来还会有其他计划的作业添加到系统中吗?如果没有 - 如果每年只有一项工作,是否值得将自动执行的开销(实施、测试、监控等)添加到系统中?不经常运行的东西很容易被遗忘,当它坏掉时没人会注意到。
考虑这个替代方案:在应用程序的某处添加一个按钮以手动启动工作,可能在管理页面上。如果您的应用程序有仪表板或登录页面,请添加一些仅对某些用户可见的信息,例如管理员 - 例如:“X 作业应该在 2011 年 11 月 23 日最后一次运行 - 请启动下一次运行2012 年 11 月 30 日之前”。
【讨论】: