2013-08-02 2 views
3

내 응용 프로그램 종속성을 연결하는 데 Spring annotation을 사용하고 있습니다.Quartz JobListener를 autowire하는 방법

가 여기에 구성되어 마찬가지로 지금까지 내가 말할 수있는 석영의 SchedulerFactoryBean 내 JobListener를 삽입 할 수있는 방법은 없습니다 : 나는 현재 프로그래밍 JobListener를 구성하는 데

@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을 통해 작업 수신자를 구성하는 데 필요한 정보가 있습니까?

답변

0

음, 정확하게 청취자와 관련이 없지만 궁극적으로 @autowired 위치를 통해 리스너를 삽입하려는 경우 XML 구성 파일에서 매핑을 정의해야합니다 (서비스/구성 요소 이름) 그리고 그 속임수를해야합니다. 실제로 '석영 작업에 서비스를 주입 보여.

관련 문제