Spring アノテーションを使用して、アプリケーションの依存関係を配線しています。
私が知る限り、JobListener を Quartz SchedulerFactoryBean に注入する方法はありません。ここで構成されているためです。
@Bean(name="schedulerFactory")
public SchedulerFactoryBean schedulerFactoryBean() throws Exception {
SchedulerFactoryBean schedulerFactoryBean = new SchedulerFactoryBean();
schedulerFactoryBean.setApplicationContextSchedulerContextKey("applicationContext");
schedulerFactoryBean.setConfigLocation(new ClassPathResource("quartz.properties"));
schedulerFactoryBean.setDataSource(dataSource);
// This call results in the error:
// java.lang.IllegalStateException: Non-global JobListeners not supported on
// Quartz 2 - manually register a Matcher against the Quartz ListenerManager instead
//schedulerFactoryBean.setJobListeners(new JobListener[] { jobActivityListener() });
return schedulerFactoryBean;
}
現在、ジョブが最初にトリガーされたときに JobListener が作成されるようにプログラムで構成する必要があります。
ListenerManager listenerManager = scheduler.getListenerManager();
if (listenerManager.getJobListener(jobKey.getName()) == null) {
logger.debug("ADDING JOB LISTENER FOR " + jobKey.getName());
listenerManager.addJobListener(new JobActivityListener(), keyEquals(jobKey));
}
Spring で依存関係を管理し、JobListener が必要とする依存関係を注入したいので、これは理想的ではありません。
Spring を介したジョブ リスナーの設定に関する情報はありますか?