2017-02-20 3 views
0

Ich weiß nicht, wie ich von einem Quartz-Job auf den ursprünglichen Kontext meiner Anwendung zugreifen kann.Zugriff auf meinen Anwendungskontext von QuartzJob

Ich kann sehen, dass beide Kontext nicht kommuniziert werden, weil ich versuche, einen DAO-Bean als Eigenschaft meiner Quartz Job Bohne zu injizieren, und ich bekomme diese Fehlermeldung:

No such bean named: "the DAO bean that I am trying to inject as a property".

Gibt es eine Möglichkeit ein zu verwenden, DAO von meinem QuartzJob?

+1

Tipp: Verwenden Sie englische Akronyme bei der Kommunikation in englischer Sprache. Sonst wirst du Leute fragen, was z. ein OAD ist, anstatt deine Frage zu beantworten. – walen

+1

Mögliches Duplikat von [Verwenden der Hibernate-Sitzung mit Quarz] (http://stackoverflow.com/questions/4446103/using-hibernate-session-with-quartz) –

Antwort

0

(Veröffentlicht im Namen des OP).

Lösung:

Im Job (es ist zwingend eine Schnittstelle zu bekommen):

public class SchedulerJob extends QuartzJobBean { 
public void executeInternal(JobExecutionContext context) 
     throws JobExecutionException { 
    try{ 
     <YOUR_BEAN_DAO_INTERFACE_OBJECT> = ((ApplicationContext) context.getJobDetail().getJobDataMap().get("applicationContext")).get("<YOUR_BEAN_DAO_INTERFACE_ID>"); 
    } catch (Exception e){ 
     e.printStackTrace(); 
     return; 
    } 
} 
} 

Im .xml Rahmen der Anwendung: Es ist auch notwendig <YOUR_BEAN_DAO_INTERFACE> in diesen zu erklären XML als eine Bean:

<!-- Spring Quartz Scheduler job --> 
<bean name="schedulerJob" class="org.springframework.scheduling.quartz.JobDetailBean"> 
    <property name="jobClass" value="<PATH_OF_YOUR_CLASS_JOB>.SchedulerJob" /> 
    <property name="applicationContextJobDataKey" value="applicationContext" /> 
</bean> 

<!-- Cron Trigger, run every 10 seconds --> 
<bean id="cronTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean"> 
    <property name="jobDetail" ref="schedulerJob" /> 
    <property name="cronExpression" value="0/10 * * * * ?" /> 
</bean> 

<!-- DI --> 
<bean id="scheduler" 
    class="org.springframework.scheduling.quartz.SchedulerFactoryBean"> 
    <property name="jobDetails"> 
     <list> 
      <ref bean="schedulerJob" /> 
     </list> 
    </property> 

    <property name="triggers"> 
     <list> 
      <ref bean="cronTrigger" /> 
     </list> 
    </property> 
</bean> 
Verwandte Themen