在 EJB 中安排类似 Cron 的作业
Schedule a Cron like job in EJB
我有以下 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 的表达式。我想动态创建调度程序,这样我就不必为多个批处理作业创建多个 bean。
您可以使用@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"
我有以下 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 的表达式。我想动态创建调度程序,这样我就不必为多个批处理作业创建多个 bean。
您可以使用@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"