2010-02-01 51 views
4

Java EE中的计时器任务不太舒服。有没有任何util,用cron语法来配置定时器,如“0 20 20 * *”?Java EE 5的Cron语法?

我想知道,如果这将是使用Quartzinside(集群)Java EE应用程序的好方法。据http://www.prozesse-und-systeme.de/serverClustering.html(德国页)用石英和Java EE集群有限制:

  • JDBC必须作为工作存储区石英
  • 只有集群关联石英实例被允许使用该JDBC工作专卖店
  • 所有群集节点必须同步分裂第二
  • 所有群集节点必须使用相同的quartz.properties文件

我宁愿为CON一个更简单的方法配置定时器服务,而不是Java EE托管调度器。

回答

5

石英绝对支持类似cron的语法(与CronTrigger),但您的要求不明确。也可以看看Jcrontabcron4j


作为一个侧面说明,以声明方式创建的cron般的时间表,以触发EJB方法的能力是计时器服务在EJB 3.1(使用@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... 
    } 
} 
+0

非常感谢。我想只使用JEE的东西。 TimerService.createCalendarTimer(ScheduleExpression)是我的最爱。详细信息可在http://jcp.org/en/jsr/detail?id=318 – marabol 2010-02-03 15:34:34

+0

@marabol如果JEE6是一个选项,那么确实是一个明智的选择。 – 2010-02-03 15:49:26