【问题标题】:Cron syntax with Java EE 5?Java EE 5 的 Cron 语法?
【发布时间】:2011-01-11 16:41:13
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: cron timer scheduling quartz-scheduler java-ee-5


    【解决方案1】:

    Quartz 绝对支持类似 cron 的语法(使用 CronTrigger),但您的要求并不明确。也可以看看Jcrontabcron4j


    附带说明,以声明方式创建类似 cron 的计划以触发 EJB 方法的能力是 EJB 3.1 中 Timer Service 最重要的增强之一(使用 @Schedule 注释)。下面以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...
        }
    }
    

    【讨论】:

    • 非常感谢。我只想使用 JEE 的东西。 TimerService.createCalendarTimer(ScheduleExpression) 是我的最爱。详情请咨询jcp.org/en/jsr/detail?id=318
    • @marabol 如果 JEE6 是一个选项,那确实是一个明智的选择。
    猜你喜欢
    • 2010-09-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-11
    • 2014-09-07
    • 1970-01-01
    • 2012-11-11
    • 1970-01-01
    相关资源
    最近更新 更多