Quartz ジョブ スケジューラを使用して、電子メールを自動的に送信しようとしています。これを行うには、jobDataMap を使用して、ジョブを完了するために必要なデータを、cronTrigger が初期化されるクラスからジョブが実行されるクラスに渡します。ただし、jobDataMap を使用して渡す必要があるデータにアクセスしようとすると、常に null が返されます。何がうまくいかないのか誰にも考えがありますか? トリガーを初期化するクラスのコードは次のとおりです。
trigger = new CronTrigger("SendReportEmailsTrigger", "CronTriggerGroup", "0 0/1 * * * ?");
List < UserDetails> aList = customerDetailsService.getUsersConfiguredForEmailedReports();
JobDataMap jobDataMap = new JobDataMap();
jobDataMap.put("service", reportService);
trigger.setJobDataMap(jobDataMap);
そして、ジョブが実行されるコードは次のとおりです。
public void execute(JobExecutionContext context) throws JobExecutionException {
JobDataMap dataMap = context.getJobDetail().getJobDataMap();
logger.debug("map = " + dataMap.entrySet());
logger.debug("dataMap = " + context.getJobDetail().getJobDataMap());
for (Object val : dataMap.entrySet()) {
logger.debug("next data map val = " + val);
}
EmailReportService emailReportService = (EmailReportService) dataMap.get("service");
logger.debug("email report service = " + emailReportService);
ログでは、emailReportService が null として返されます。