[英]getJobDataMap in Quartz gives Null Pointer exception
我試圖將一些數據放入Quartz作業數據圖中,並在實現Job類的類中訪問它們。 但這給了我空指針異常。 當應用程序運行時沒有訪問Job Data Map的代碼時,它運行良好。
我使用Cron觸發器執行預定的作業。 在此示例中,我將其配置為每20秒運行一次。
@Bean
public Trigger simpleJobTrigger(@Qualifier("simpleJobDetail") JobDetail jobDetail) {
CronTriggerFactoryBean factoryBean = new CronTriggerFactoryBean();
factoryBean.setJobDetail(jobDetail);
factoryBean.setStartDelay(0L);
factoryBean.setName("test-trigger");
factoryBean.setStartTime(LocalDateTime.now().toDate());
factoryBean.setCronExpression("0/20 * * * * ?");
factoryBean.setMisfireInstruction(SimpleTrigger.MISFIRE_INSTRUCTION_FIRE_NOW);
try {
factoryBean.afterPropertiesSet();
} catch (ParseException e) {
e.printStackTrace();
}
return factoryBean.getObject();
}
以下是我的simpleJobDetail
bean。
@Bean
public JobDetailFactoryBean simpleJobDetail() {
JobDetailFactoryBean factoryBean = new JobDetailFactoryBean();
factoryBean.setJobClass(Executor.class);
factoryBean.setDurability(true);
factoryBean.setName("test-job");
factoryBean.getJobDataMap().put("caller", "James");
return factoryBean;
}
這是我的execute
方法。
public class Executor implements Job {
@Autowired
ScheduledTaskService scheduledTaskService;
@Override
public void execute(JobExecutionContext jobExecutionContext) {
JobDataMap jobDataMap = null;
try {
jobDataMap = jobExecutionContext.getTrigger().getJobDataMap();
String caller = jobDataMap.get("caller").toString();
System.out.println("This is called by the user "+caller);
} catch (Exception e) {
//e.printStackTrace();
System.out.println("UNABLE TO ACCESS THE JOB DATA MAP "+e);
}
scheduledTaskService.doThePayment();
}
}
當我運行該應用程序時,它將打印catch子句中給出的日志。
無法訪問作業數據映射java.lang.NullPointerException
為什么execute方法無法訪問JobDataMap? 我應該設置任何配置或屬性嗎? 這時無法提供工作圖的原因是什么? 我該如何解決?
在我的代碼中發現了問題。 訪問JobDataMap時,我已經通過以下方式對其進行了訪問。
jobDataMap = jobExecutionContext.getTrigger().getJobDataMap();
相反,就我而言,我應該從JobDetails(而不是觸發器)訪問它。
jobDataMap = jobExecutionContext.getJobDetail().getJobDataMap();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.