使用 spring 在 Quartz 调度程序中完成作业后插入数据
Insert data after completing job in Quartz scheduler using spring
我正在执行一项任务,我需要在数据库中保存作业状态,但是当我尝试这样做时它给了我 java.lang.nullpointerexception
。我认为它会发生,因为每当我尝试 select/save/update 数据库中的任何记录时,它都会给我类似这样的错误。
这是我的代码
public class PostFBJob implements Job {
private SchedulerService schedulerService;
private SubCampaignService subCampaignService;
@SuppressWarnings("unchecked")
public void execute(JobExecutionContext context) throws JobExecutionException {
JobDetail jobDetail = context.getJobDetail();
JobDataMap jobDataMap = jobDetail.getJobDataMap();
schedulerService = (SchedulerService) jobDataMap.get("schedulerService");
SubCampaign subCampaign = (SubCampaign) jobDataMap.get("subCampaign");
if (prStreamItem.getName().equalsIgnoreCase("Facebook") && StringUtils.isNotBlank(branch.getFbAccessToken())) {
FacebookService facebookService = FacebookService.getSingleton();
try {
subCampaign.setStatus("Completed");
subCampaign.setMessage("Completed");
subCampaignService.updateSubCampaign(subCampaign);
} catch (Exception e) {
log.error("", e);
}
}
}
}
异常
java.lang.NullPointerException
at com.ace.Job.SubCampaignJob.execute(SubCampaignJob.java:147)
at org.quartz.core.JobRunShell.run(JobRunShell.java:213)
at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:557)
Error: java.lang.NullPointerException
请帮我解决这个问题。我是 Spring 和 Quartz 的新手。
提前致谢
此异常是由于 subCampaignService 的空对象。
注入只对那些由 spring.
管理的对象起作用
扫描您要使用服务的所有包裹。
基于注释的配置
@ComponentScan({"com.ace"})
XML基础配置
<context:component-scan base-package="com.ace"/>
并在更新之前检查空值,如下所示:
try {
subCampaign.setStatus("Completed");
subCampaign.setMessage("Completed");
if(subCampaign != null && subCampaignService != null) //Check is not null to subCampaign before update
subCampaignService.updateSubCampaign(subCampaign);
} catch (Exception e) {
log.error("", e);
}
我想你要找的答案就在这里
请查看下方link
Correct way to persist Quartz triggers in database
你也可以查看这个link
Using Hibernate session with quartz
我正在执行一项任务,我需要在数据库中保存作业状态,但是当我尝试这样做时它给了我 java.lang.nullpointerexception
。我认为它会发生,因为每当我尝试 select/save/update 数据库中的任何记录时,它都会给我类似这样的错误。
这是我的代码
public class PostFBJob implements Job {
private SchedulerService schedulerService;
private SubCampaignService subCampaignService;
@SuppressWarnings("unchecked")
public void execute(JobExecutionContext context) throws JobExecutionException {
JobDetail jobDetail = context.getJobDetail();
JobDataMap jobDataMap = jobDetail.getJobDataMap();
schedulerService = (SchedulerService) jobDataMap.get("schedulerService");
SubCampaign subCampaign = (SubCampaign) jobDataMap.get("subCampaign");
if (prStreamItem.getName().equalsIgnoreCase("Facebook") && StringUtils.isNotBlank(branch.getFbAccessToken())) {
FacebookService facebookService = FacebookService.getSingleton();
try {
subCampaign.setStatus("Completed");
subCampaign.setMessage("Completed");
subCampaignService.updateSubCampaign(subCampaign);
} catch (Exception e) {
log.error("", e);
}
}
}
}
异常
java.lang.NullPointerException
at com.ace.Job.SubCampaignJob.execute(SubCampaignJob.java:147)
at org.quartz.core.JobRunShell.run(JobRunShell.java:213)
at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:557)
Error: java.lang.NullPointerException
请帮我解决这个问题。我是 Spring 和 Quartz 的新手。
提前致谢
此异常是由于 subCampaignService 的空对象。 注入只对那些由 spring.
管理的对象起作用扫描您要使用服务的所有包裹。
基于注释的配置
@ComponentScan({"com.ace"})
XML基础配置
<context:component-scan base-package="com.ace"/>
并在更新之前检查空值,如下所示:
try {
subCampaign.setStatus("Completed");
subCampaign.setMessage("Completed");
if(subCampaign != null && subCampaignService != null) //Check is not null to subCampaign before update
subCampaignService.updateSubCampaign(subCampaign);
} catch (Exception e) {
log.error("", e);
}
我想你要找的答案就在这里
请查看下方link
Correct way to persist Quartz triggers in database
你也可以查看这个link
Using Hibernate session with quartz