2013-03-29 1 views
2

Я разрабатываю плановые услуги.Кварц не удаляет удаленное задание из расписания

Приложение разработано с использованием JDK 1.6, Spring Framework 2.5.6 и Quartz 1.8.4 для планирования рабочих мест.

У меня есть два кластерных сервера с WebLogic Server 10.3.5.

Поведение, которое я заметил, заключается в том, что если задание удалено (или переименовано) из приложения, Quartz пытается запустить старое задание (которое, похоже, зарегистрировано в базе данных, которую Quartz использует для синхронизации своих экземпляров).

Может ли кто-нибудь объяснить причину такого поведения?

Моя потребность в том, что когда я удаляю задание в приложении и я перезапускаю экземпляры WebLogic, Quartz не пытается загружать старую работу.

Заранее спасибо

+0

Вы удаляете задание из кварцевых таблиц? –

+0

Я только удалил задание из кода приложения и восстановил дистрибутив программного обеспечения –

ответ

2

Вы должны удалить задание явно из кварцевого планировщика, вы сделали это? , например, если у вас есть этот scedhuler

private org.quartz.Scheduler myScheduler = null; 

вам нужно вызвать:

myScheduler.deleteJob(... 

когда задание удаляется или переименованы.

Если да, возможно, вы передаете неправильный ключ?

В качестве альтернативы, когда вы строите кварцевое задание, вы можете использовать: jobBuilder.storeDurably(false) Это приведет к автоматическому удалению вашего задания кварца, если к нему больше не активирован активный триггер.

+0

С помощью deletejob задание было правильно удалено. В настоящее время я занимаюсь рефакторингом запланированных заданий, есть ли способ или конфигурация кварца, которая позволяет автоматически удалять задания, когда они больше не существуют? –

+0

@ClaudioQuery: см. Править – axelrod

+2

Спасибо за ваше предложение. Я использую Spring Framework (org.springframework.scheduling.quartz) для запуска кварца, а значение по умолчанию для «долговременно» - false. Кажется, что этот параметр не влияет. –