【问题标题】:Execute a task every year in a Java web application每年在 Java Web 应用程序中执行一项任务
【发布时间】:2012-11-24 03:20:44
【问题描述】:

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

【问题讨论】:

    标签: java time timer


    【解决方案1】:

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

    您也可以使用java.util.Timer,但我只会在您的用例非常琐碎的情况下这样做,并且您确保在 Web 应用启动时基于某种类型的持久层正确地重新启动您的 Timer

    【讨论】:

    • cron => 或 Windows 中的计划任务。
    • 我也是,宁愿做一个cron工作,因为它不需要VM来运行一整年,只需要执行一次。
    • 感谢您的回答,但很抱歉如何在 Windows 环境中使用 cronjob?那可能吗?我正在阅读有关 cron 表达式的信息,但它似乎仅适用于 unix?
    • 正如@Max 所说,您可以使用计划任务:windows.microsoft.com/en-US/windows7/schedule-a-task
    【解决方案2】:

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

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

    【讨论】:

    • 如果我在windows上运行如何使用cronjob?
    • @DiegoRamos : Cron 适用于 Linux 环境。相当于windows环境的cron是windows task scheduler。一种方法是使用该工具创建一个新任务并将一个 jar 文件设置为脚本。 jar 文件可能包含您需要定期运行的代码。另一种方法是您可以创建命令脚本并将其添加到任务调度程序而不是 jar 文件。请参阅以下链接。 stackoverflow.com/questions/12034177/…
    【解决方案3】:

    考虑与业务利益相关者核实一年只运行一次的工作是否真的应该完全自动化。根据我的经验,很可能会对日程安排(例如,今年应该在一周中的哪一天运行?)或在这么长时间后对工作的步骤进行细微的更改。

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-10
      • 2012-08-03
      • 2011-07-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多