Execute a task every year in a Java web application
每年如何在Web应用程序中自动执行任务? Timer类对此有帮助吗?我也听说过石英吗?我在他们的页面上注册,但似乎不是免费的。谢谢您的帮助。
Quartz绝对是一个不错的选择,它是免费的开源软件,并使用Apache 2.0许可证(您无需注册即可下载)。如果您在* nix环境中,也可以简单地使用cron。
您也可以使用
请考虑与业务利益相关者核实,是否仅应将每年仅运行一次的工作真正完全自动化。根据我的经验,很可能时间表会有细微的变化(例如,今年应该在一周的哪一天运行?)或经过很长时间后才可以更改工作的步骤。
此外,将来还会有其他计划的作业添加到系统中吗?如果不是,那么每年只有一项工作,是否值得在系统中增加自动执行的开销(实现,测试,监视等)?很少运行此操作的人很容易被遗忘,并且当它损坏时没人会注意到。
考虑以下替代方法:在应用中的某个位置添加一个按钮,以手动启动该工作(可能在管理页面上)。如果您的应用程序具有仪表板或登录页面,请添加一些仅对某些用户可见的信息,例如管理员-例如:" X作业应该在2011年11月23日上次运行,请启动下一次运行2012年11月30日之前"。
我建议您使用cron之类的东西。您的需求与UNIX cron守护程序的活动非常相似。有一个Java库提供了称为cron4j(http://www.sauronsoftware.it/projects/cron4j/)的相同功能。
下面是一些可以使用的调度程序。
- cron4j
- 石英
- jcrontab
- Essiembre J2EE调度程序
- JDRing