1

Taskletを実装するインターフェイスIJobBase を実装する独自の Spring Batch Job ( MyTaskletJob ) を持っています。

rollBackという別のメソッドを実装するために私の仕事に必要なもの

public interface IJobBase extends Tasklet {

 void rollBack();

}

public class MyTaskletJob IJobBase{

    public RepeatStatus execute(StepContribution arg0, ChunkContext arg1){

            …}
    public void rollBack(){

            …}

}

春の構成:

<bean id="jobTaskletStep1" class="com....job.MyTaskletJob ">
    <property name="message" value="Hello..." />
</bean>
<batch:job id="backgroundJob">
<batch:step id="step0">
        <batch:tasklet ref="jobTaskletStep1"/>
        </batch:step>
</batch:job>

これは私が私の仕事を実行する方法です:

// ジョブ名に従ってジョブを作成します

ジョブ job = (ジョブ) applicationContext.getBean(“backgroundJob”);

// ジョブを実行 – jobLauncherMyTaskletJob * execute * メソッドを実行します

JobExecution myJobExecution = jobLauncher.run(ジョブ, jobParameters);

// ExitStatus を確認します

If(myJobExecution.getExitStatus().equals(ExitStatus.FAILED)){

// MyTaskletJobでrollback()メソッド を実行する必要があります

私の質問は、JobExecution FAILED のときにメソッド rollback() メソッドを呼び出す方法です

4

1 に答える 1

0

簡単な方法は、JobExecutionListener#afterJob(JobExecution) を使用することです。jobTaskletStep1 への参照をリスナーに挿入できます。そこから JobExecution に設定されたステータスを確認し、必要に応じてメソッドを呼び出すことができます。

于 2013-03-12T04:03:58.120 に答える