Ответ 1
В интересах других, я отправляю ответ на вопрос, который у меня был - я получил помощь от Terracotta Forum Zemian Deng: публикация на Terracotta форум
Вот повторная крышка: Разумеется, фактическая проверка рабочих заданий работала нормально - это было просто время в модульных тестах. Я добавил несколько спальных мест в задании и изменил модульные тесты, чтобы запланировать второе задание, пока первый из них все еще работает, и подтвердил, что действительно могу найти первое задание, которое все еще выполняется.
Исключением, которое я получал, было то, что я пытался запланировать новое задание с тем же именем, вместо того, чтобы пытаться запустить уже сохраненное в задании планировщика. Следующий код работал точно так, как мне было нужно:
List<JobExecutionContext> currentJobs = scheduler.getCurrentlyExecutingJobs();
for (JobExecutionContext jobCtx: currentJobs){
jobName = jobCtx.getJobDetail().getName();
groupName = jobCtx.getJobDetail().getGroup();
if (jobName.equalsIgnoreCase("job_I_am_looking_for_name") && groupName.equalsIgnoreCase("job_group_I_am_looking_for_name")) {
//found it!
logger.warn("the job is already running - do nothing");
return;
}
}
// check if this job is already stored in the scheduler
JobDetail emailJob;
emailJob = scheduler.getJobDetail("job_I_am_looking_for_name", "job_group_I_am_looking_for_name");
if (emailJob == null){
// this job is not in the scheduler yet
// create JobDetail object for my job
emailJob = jobFactory.getObject();
emailJob.setName("job_I_am_looking_for_name");
emailJob.setGroup("job_group_I_am_looking_for_name");
scheduler.addJob(emailJob, true);
}
// this job is in the scheduler and it is not running right now - run it now
scheduler.triggerJob("job_I_am_looking_for_name", "job_group_I_am_looking_for_name");
Спасибо! Марина