在EJB中安排类似Cron的作业

时间:2019-04-16 07:43:14

标签: java java-ee java-batch

我有以下EJB,它以固定的延迟调度“ MyJob”。

@Startup
@Singleton
public class Scheduler {

    static final long INITIAL_DELAY = 0;
    static final long PERIOD = 5;

    @Resource
    ManagedScheduledExecutorService scheduler;

    @PostConstruct
    public void init() {
        this.scheduler.scheduleWithFixedDelay(new MyJob(), INITIAL_DELAY, PERIOD, TimeUnit.SECONDS);
    }

}

我想用像cron这样的表达式来计划这项工作,如何在不使用Quartz或任何其他框架的情况下实现这一目标?

编辑: 更具体地说-我想让cron like表达式受属性驱动。我想动态创建调度程序,这样就不必为多个批处理作业创建多个bean。

1 个答案:

答案 0 :(得分:3)

您可以使用@Schedule API:

@Schedules({
            @Schedule(month = "5", dayOfMonth = "20-Last", minute = "0", hour = "8"),
            @Schedule(month = "6", dayOfMonth = "1-10", minute = "0", hour = "8")
    })
    private void plantTheCorn() {
        // Dig out the planter!!!
    }

查看以下问题和答案:Have an EJB schedule tasks with "crontab syntax"