【发布时间】:2019-12-04 03:39:14
【问题描述】:
我已经检查了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;
}
任何帮助将不胜感激。谢谢!
【问题讨论】:
-
您使用的是什么版本的 JBoss AS 或 JBoss EAP?
-
@JamesR.Perkins 规范-版本:4.2.3.GA
标签: java asynchronous jboss cron quartz-scheduler