【发布时间】:2017-05-24 16:09:50
【问题描述】:
我正在尝试在 dropwizard 应用程序中使用 Quartz 作业调度程序来安排作业。在实现 Quartz Job 接口的类中,我注入了一些我的服务类来使用它的方法。但它没有被注入,该对象为空。请有人帮助我吗?
JobManagerImpl 类
public class MyJobManagerImpl {
private SchedulerFactory schedulerFactory;
private Scheduler scheduler;
private static final String group = "REFRESH";
private static final Logger logger = LoggerFactory.getLogger(TcConnectionRefreshJobManagerImpl.class);
public MyJobManagerImpl(Properties quartzConfig) {
try {
schedulerFactory = new StdSchedulerFactory(quartzConfig);
scheduler = schedulerFactory.getScheduler();
scheduler.start();
} catch (SchedulerException e) {
logger.error("Error starting scheduler", e);
}
}
public boolean addJob(String name, int cronHour, int cronMinute) throws SchedulerException {
JobDetail jobDetail = newJob(TcConnectionRefreshJob.class).withIdentity(name, group)
.requestRecovery().build();
String cronString = "0 " + cronMinute+" "+cronHour+" ? * *" ;
CronTrigger cronTrigger = newTrigger().withIdentity(name, group).withSchedule(cronSchedule(cronString).
withMisfireHandlingInstructionDoNothing()).build();
scheduler.scheduleJob(jobDetail, cronTrigger);
return true;
}
public boolean deleteJob(String name) {
JobKey jobKey = JobKey.jobKey(name,group);
TriggerKey triggerKey = TriggerKey.triggerKey(name,group);
try {
scheduler.unscheduleJob(triggerKey);
scheduler.deleteJob(jobKey);
} catch (SchedulerException e) {
logger.error("Exception occurred "+e);
return false;
}
return true;
}
ScheduledJob 类
public class ScheduledJob implements Job {
public static IMyService myService;
@Override
public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
myService.executeAction();
}
@SuppressWarnings("static-access")
@Inject
public void setMyService(IMyService myService) {
this.myService = myService;
}
MyService 实现 IMyService 并将 IMyService 绑定到我的应用程序类中的 MyService 实现,例如 bind(IMyservice.class).toInstance(new MyService());
【问题讨论】:
-
看看这个链接:devsoap.com/injecting-cdi-managed-beans-into-quarz-jobs。另外,在您的代码中,为什么要使用
public static来表示myService字段?
标签: java cron quartz-scheduler dropwizard