我有一份石英工作:
public class GlobalIdleMonitorJob extends AbstractJob {
@Override public void execute(JobExecutionContext context)
throws JobExecutionException {
try {
getJobService().processUserIdle();
}catch(Exception e){
getLogger().error("GlobalIdleMonitorJob",e);
}
}
}
此作业每X秒运行一次。我希望这项工作在第一次失败后停止。换句话说,如果
getJobService().processUserIdle();
抛出一个异常,我希望这个工作不再运行,只有在手动重启或web应用服务器重启后才能运行。我应该在catch块中抛出一个特殊的异常或者如何配置它吗?
答案 0 :(得分:1)
您可以将JobExecutionException类对象的setUnscheduleAllTriggers方法设置为true(true)。请参考官方石英网站上的以下附件,供您参考。
答案 1 :(得分:0)
在你的catch区块中,你可以取消安排这样的工作:
try {
getJobService().processUserIdle();
} catch(Exception e) {
scheduler.unscheduleJob(triggerKey)
getLogger().error("GlobalIdleMonitorJob",e);
}
如果您的应用中没有任何其他触发器或工作,您只需拨打scheduler.clear()
,但如果您可能在此处添加新的工作或触发器,这可能不是一个好主意。将来