2016-03-29 7 views
0

私はSpring/Quartzを使用してジョブをスケジュールしています。リストや要素をSpringプロパティとして動的に追加することはできますか?

マイSchedulerFactoryBean

<bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean"> 
    <property name="jobDetails"> 
     <list> 
      <ref bean="testJob1" /> 
      <ref bean="testJob2" /> 
     </list> 
    </property> 
    <property name="triggers"> 
     <list> 
      <ref bean="testJob1Trigger" /> 
      <ref bean="testJob2Trigger" /> 
     </list> 
    </property> 
</bean> 

私はスケジュールしたいジョブの数が変化するので、私はコードからリストとしてそれらを追加したいと思います。

基本的に今私はtestJob1testJob2のジョブを持っています。

XMLに触れずにtestJob3,testJob4などを追加するにはどうすればよいですか?

ジョブとトリガのリストを動的に定義することはできますか?

<bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean"> 
    <property name="jobDetails"> 
     <list> 
      <ref bean="anArrayListOfJobs" /> 
     </list> 
    </property> 
    <property name="triggers"> 
     <list> 
      <ref bean="anArrayListOfTriggers" /> 
     </list> 
    </property> 
</bean> 
+0

Beanが初期化され、プロパティが設定された後は、可能ではないようです。その中に複数のジョブのリストを持つ1つのジョブを持つことができます。 CopyOnWriteArrayListを使用することもできます。 –

答えて

0

あなたはジョブを定義し、動的にトリガし、動的にジョブをスケジュールすることができます。

私はこのような何かを意味します。

// Create Job 
    JobDetailFactoryBean JobDetail = new JobDetailFactoryBean(); 
    jobDetail.setJobClass(ScheduledJob.class); 
    jobDetail.setName("reportJob1"); 
    jobDetail.setDurability(true); 
    jobDetail.setJobDataMap(new JobDataMap()); 
    jobDetail.afterPropertiesSet(); 

    // create CRON Trigger 
    CronTriggerFactoryBean trigger = new CronTriggerFactoryBean(); 
    trigger.setBeanName("UniqueCronBeanName"); 
    trigger.setGroup("uniqueCronGroup"); 
    trigger.setJobDetail(jobDetail.getObject()); 
    trigger.setCronExpression("0 0 12 * * ?"); 
    trigger.afterPropertiesSet(); 

次に、定義したスケジューラファクトリに設定することでジョブをスケジュールできます。

schedulerFactoryBean.getScheduler().scheduleJob(jobDetail.getObject(), trigger.getObject()); 
関連する問題