2017-02-20 5 views
0

私のアプリケーションの元のコンテキストにQuartz Jobからアクセスする方法はわかりません。QuartzJobからの私のアプリケーションコンテキストへのアクセス

私は私のクォーツジョブBeanのプロパティとしてDAO Beanを注入しようとしていますので、私は両方のコンテキストが伝達されていないことがわかりますし、私はこのエラーを取得:

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

を使用するためにどのような方法があります私のQuartzJobのDAO?

+1

ヒント:英語で通信する場合は、英語の略語を使用してください。そうでなければ、何かが不思議に思う人がいます。あなたの質問に答えるのではなく、OADがあります。 – walen

+1

[クォーツでHibernateセッションを使用する]の可能な複製(http://stackoverflow.com/questions/4446103/using-hibernate-session-with-quartz) –

答えて

0

(OPのために掲示される)

ソリューション:仕事で

(インターフェイスを取得するために必須です):アプリケーションの.xmlの文脈では

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; 
    } 
} 
} 

:この中で<YOUR_BEAN_DAO_INTERFACE>を宣言することも必要ですBeanとしてのXML:

<!-- 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> 
関連する問題