2013-03-07 57 views
1

我有自己的春天批处理作业(MyTaskletJob)实现我的接口IJobBase实现任务蕾春天批次:如何调用我的回滚执行

我需要什么,我的工作来实现另一方法称为回滚

公共接口IJobBase延伸微进程 {

void rollBack(); 

}

公共类MyTaskletJob IJobBase {

public RepeatStatus execute(StepContribution arg0, ChunkContext arg1){ 

      …} 
    public void rollBack(){ 

      …} 

}

Spring配置:

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

这是我跑的方式我的工作:

//根据作业名称创建作业

招聘工作=(工作)applicationContext.getBean(“backgroundJob”);

//运行作业 - 的jobLauncher将运行MyTaskletJob * 执行 *方法

JobExecution myJobExecution = jobLauncher.run(作业,jobParameters);

//检查退出状态

如果(myJobExecution.getExitStatus()。等于(ExitStatus.FAILED)){

//需要在MyTaskletJob运行回滚()方法

我的问题是如何在JobExecution失败时调用方法rollback()方法

回答

0

简单的方法是使用JobExecutionListener#afterJob(JobExecution)。您可以将引用添加到您的jobTaskletStep1到监听器中。从那里您可以检查JobExecution中设置的状态并根据需要调用该方法。

+0

是的,这就是我所做的非常感谢 – Yosefarr 2013-03-17 06:44:04

+0

我怎样才能注入参考工作jobTaskletStep1 – Yosefarr 2013-03-17 12:24:01

+0

我不知道我跟着。 – 2013-03-19 16:23:29