Java EE 5 的 Cron 语法?

发布于 2024-08-19 20:08:55 字数 523 浏览 7 评论 0原文

Java EE 中的计时器任务不太舒服。是否有任何实用程序可以使用 cron 语法(如“0 20 20 * *”)配置计时器?

我想知道这是否是使用 Quartzinside(集群)Java EE 应用程序的好方法。根据 http://www.prozesse-und-systeme.de/serverClustering.html< /a>(德语页面)Quartz 和 Java EE 集群存在限制:

  • 必须将 JDBC 用作 Quartz 的作业存储
  • 仅允许集群关联的 Quartz 实例使用此 JDBC 作业存储
  • 所有集群节点必须同步到瞬间
  • 所有集群节点必须使用相同的quartz.properties 文件

我更喜欢一种更简单的方法来配置计时器服务,而不是非Java EE 管理的调度程序。

Timer Tasks in Java EE are not very comfortable. Is there any util, to configure timer with cron syntax like "0 20 20 * * "?

I wonder, if it would be a good way to use Quartzinside (clustered) Java EE application. According to http://www.prozesse-und-systeme.de/serverClustering.html (german page) there limits with Quartz and Java EE clustering:

  • JDBC must be used as job store for Quartz
  • Only cluster associated Quartz instances are allowed to use this JDBC job store
  • All cluster nodes must be synchronized to the split second
  • All cluster nodes must use the same quartz.properties file

I would prefer an easier way for configuration of timer service, instead an not Java EE managed scheduler.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

清君侧 2024-08-26 20:08:55

Quartz 绝对支持类似 cron 的语法(使用 CronTrigger< /a>)但你的要求不明确。也可以看看 Jcrontabcron4j


附带说明一下,以声明方式创建类似 cron 的计划来触发 EJB 方法的能力是 EJB 3.1 中计时器服务最重要的增强功能之一(使用 @Schedule 注释)。下面的示例取自 EJB 3.1 中的新功能

@Stateless
public class NewsLetterGeneratorBean implements NewsLetterGenerator {

    @Schedule(second="0", minute="0", hour="0",
                  dayOfMonth="1", month="*", year="*")
    public void generateMonthlyNewsLetter() {
        ... Code to generate the monthly news letter goes here...
    }
}

Quartz definitely support cron-like syntax (with the CronTrigger) but your requirements are not clear. Also maybe have a look at Jcrontab or cron4j.


As a side note, the ability to declaratively create cron-like schedules to trigger EJB methods is one of the most important enhancement of the Timer Service in EJB 3.1 (using the @Schedule annotation). Below, an example taken from New Features in EJB 3.1:

@Stateless
public class NewsLetterGeneratorBean implements NewsLetterGenerator {

    @Schedule(second="0", minute="0", hour="0",
                  dayOfMonth="1", month="*", year="*")
    public void generateMonthlyNewsLetter() {
        ... Code to generate the monthly news letter goes here...
    }
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文