指定したタイム ゾーンに従って cron ジョブをスケジュールしたい。最初は正常に起動しますが、次回は指定されたタイム ゾーンに従って起動するのではなく、システムの時間に従って起動します。
Trigger trigger = TriggerBuilder.newTrigger().withDescription(jobPojo.getDescription()).withIdentity(jobPojo.getTriggerName(), jobPojo.getTriggerGroup())
.withSchedule(CronScheduleBuilder.cronSchedule(jobPojo.getExpression().trim()).inTimeZone(TimeZone.getTimeZone(jobPojo.getTimeZone())).withMisfireHandlingInstructionIgnoreMisfires()).usingJobData(jobDataMap).forJob(jobKey).build();
// json pojo でタイムゾーンを渡しているので、例: jobPojo.getTimeZone() ="GMT+4:00" これはドバイのタイムゾーン Id です。私のシステムはインドで稼働しています。以下は私のフェッチコードです:
SimpleDateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss");
Trigger trigger = scheduler.getTrigger(triggerKey);
jobPojo.setNextFireTime(dateFormat.format(trigger.getNextFireTime()));
事前に感謝..