найти, выполняется ли задание в Quartz1.6

Я хотел бы уточнить детали метода scheduler.getCurrentlyExecutingJobs () в Quartz1.6. У меня есть задание, в котором в любой момент должен быть запущен только один экземпляр. Это может быть запускается "запустить сейчас" из пользовательского интерфейса, но если экземпляр задания уже запущен для этого задания - ничего не должно произойти.

Вот как я проверяю, есть ли запущенное задание, которое меня интересует:

    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");
    }               
}

затем, чтобы проверить это , У меня есть модульный тест, который пытается запланировать два экземпляра этого задания один за другим. Я ожидал увидеть предупреждение при попытке запланировать второе задание, однако вместо этого я получаю следующее исключение:

org.quartz.ObjectAlreadyExistsException: Unable to store Job with name:
 'job_I_am_looking_for_name' and group: 'job_group_I_am_looking_for_name', 
 because one already exists with this identification.

Когда Я запускаю этот модульный тест в режиме отладки с разрывом в этой строке:

List currentJobs = scheduler.getCurrentlyExecutingJobs ();

Я вижу, что список пуст - поэтому планировщик не видит это задание как выполняющееся , но он по-прежнему не может запланировать его снова - это говорит мне, что задание действительно выполнялось в то время ...

Я упустил некоторые тонкости с этот метод планировщика?

Спасибо!

Марина

12
задан Marina 6 February 2012 в 02:45
поделиться