У меня есть код, чтобы запланировать выполнение задания каждые 5 минут. Код следующий
JobDetail jobDetail = JobBuilder.newJob(ChieldJob.class).withIdentity(("job_"+sched_id+"_"+schd_name), "todaysJob")
.setJobData(chieldJobData).build();
Код для создания триггера следующий.
Trigger trigger = TriggerBuilder.newTrigger().withIdentity(("trg_" + sched_id +"_"+schd_name), "todaysJob")
.startAt(new Date(row.get(field_Schd_Start_TS).longValue()))
.build();
trigger = trigger.getTriggerBuilder().withSchedule((ScheduleBuilder) SimpleScheduleBuilder.repeatMinutelyForever(5)).build();
Теперь я планирую работу по приведенному ниже коду
context.getScheduler().scheduleJob(jobDetail,trigger);
Здесь контекст - это объект JobExecutionContext, потому что я запускаю это задание из другого класса выполнения задания. Метод getScheduler () вернет тот же экземпляр планировщика, из которого выполняется основное задание.
Проблема в том, что это задание в объекте «jobDetail» выполняется только один раз в указанное время, указанное в «.startAt (new Date (row.get (field_Schd_Start_TS)»), тогда оно не выполняется каждые 5 минут. < strong> Я не могу понять, почему он не выполняется повторно.
В триггере nextFireTime имеет значение NULL. Почему? Я не могу этого узнать. Я делаю небольшую программу в основном методе для планирования задания, здесь я вижу, что, когда задание выполняется, мы получаем объект JobExecutionContext в этом задании, здесь я отлаживаю и вижу, что он содержит объект триггера, для которого установлен nextFireTime как и ожидалось. Но этого не происходит при реальной реализации того кода, который я использую.