我已经检查了here,但似乎没有给出解决方案。
这是我的问题。
我的 seam项目中有一份cron作业,它是用jboss async编写的。它每天凌晨3点运行。
但是,昨晚该应用程序需要在该时间之前重新启动。应用程序启动时凌晨3点。
该任务设置为每凌晨3点运行,但未运行。在代码中,最终到期时间设置为12/31/9999。从技术上讲,这将假定它已经完成。
由于当时从未执行过该作业,是否还有机会继续执行该作业?就像在应用程序准备好生产后立即执行它一样。如果有解决方案,我该怎么办?
放置一些标志以检查作业是否完成将是最少的选择。
这是我的示例代码。
public void someMethodToSetJob() {
final String cronTabSchedule = "0 0 3 ? * MON-FRI *";
final Calendar cal = Calendar.getInstance();
cal.add(Calendar.MINUTE,1);
cal.set(Calendar.SECOND,0);
final Calendar expiry = Calendar.getInstance();
expiry.set(Calendar.MONTH,11);
expiry.set(Calendar.DATE,31);
expiry.set(Calendar.YEAR,9999);
expiry.set(Calendar.SECOND,0);
processBackgroundProcessCheck(cal.getTime(),cronTabSchedule,expiry.getTime());
}
@Asynchronous
@Transactional(TransactionPropagationType.REQUIRED)
public QuartzTriggerHandle processBackgroundProcessCheck(
@Expiration final Date when,@IntervalCron final String cron,@FinalExpiration final Date endDate) {
...
return null;
}
任何帮助将不胜感激。谢谢!