2013-08-02 3 views
3

Я использую аннотации Spring для привязки зависимостей приложений.Как использовать autwire Quartz JobListener

Насколько я могу сказать, что нет никакого способа, чтобы ввести мой JobListener к кварцу 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?

ответ

0

Ну, это не совсем связано с прослушивателем заданий, но в конечном итоге, если вы хотите ввести слушателя через @autowired location, в вашем файле конфигурации xml вам нужно просто определить сопоставление (не заботьтесь об услуге/компоненте имя), и это должно сделать трюк. Это действительно показывает, что я делаю инъекцию в работе кварца.

Смежные вопросы