は、私は、これは、複数の方法で行うことができると思います。..
1.Intercept言及here
<job id="footballJob">
<step id="playerload" parent="s1" next="gameLoad"/>
<step id="gameLoad" parent="s2" next="playerSummarization"/>
<step id="playerSummarization" parent="s3"/>
<listeners>
<listener ref="sampleListener"/>
</listeners>
としての仕事。 とあなたのリスターを実装する..
2.Implement独自のトリガ/スケジューラ
public interface JobExecutionListener {
void beforeJob(JobExecution jobExecution);
void afterJob(JobExecution jobExecution); // implement and call the job again
}
...
<task:scheduled ref="runScheduler" method="run" trigger="mytrigger" />
<bean id="runScheduler" class="com.spring.scheduler.MyScheduler" >
<property name="jobLauncher" ref="jobLauncher" />
<property name="job" ref="helloWorldJob" />
</bean>
..
<task:scheduled-tasks>
<!--task:scheduled ref="runScheduler" method="run" fixed-delay="5000" /> -->
<task:scheduled ref="runScheduler" method="run" cron="*/5 * * * * *" />
</task:scheduled-tasks>
あなたがあなた自身のトリガを使用し、上記への参照を渡すことができます...
<bean id="mytrigger" class="com.spring.scheduler.MyTrigger" />
public class MyScheduler {
@Autowired
private JobLauncher jobLauncher;
@Autowired
private Job job;
public void run() {
try {
JobParameters param = new JobParametersBuilder().toJobParameters();
String dateParam = new Date().toString();
JobExecution execution = jobLauncher.run(job, param);
System.out.println("Exit Status in scheduler: " + execution.getStatus());
} catch (Exception e) {
e.printStackTrace();
}
}
し、必要ならば、あなたは再び再び再実行する必要がありますタスクレット一つだけ3.Ifはトリガー
public class MyTrigger implements Trigger{
@Override
public Date nextExecutionTime(TriggerContext triggerContext) {...return date;}
を作成することができ、その簡単なだけ何度も何度もRepeatStatus.CONTINUABLE、このタスクの再実行を返します。.. 。
public RepeatStatus execute(StepContribution contribution,
ChunkContext chunkContext)throws Exception
{
return RepeatStatus.CONTINUABLE;//RepeatStatus.FINISHED;
}
そして、あなたも行うことができますいくつかの特定の段階(ステップ1または2を操作して、再度実行しているjob..beforeを構築するために具体的な手順を使用します)
をしたいのであれば、あなたは仕事になりたいです連続。あなたはタスクスケジューラを使用することができますか(spring3以降)、私はあなたがcronコマンドを操作するか、対応するメソッド内でトリガできると思います。そして、あなたはこのメソッドでトリガを止めるいくつかの条件を持つことができます。 – surya
バッチは連続して実行されません。 ジョブがリスナーに定義をロードし、Step1,2,3が1つの定義を処理した後、Step1に戻って次の処理を実行します。 – LG87