2013-03-07 1 views
1

У меня есть моя весна Batch Job (MyTaskletJob), который реализует свой интерфейс IJobBase, который реализует тасклет,весной партия: Как назвать моя реализация RollBack

Что мне нужно, чтобы моя работа по реализации другого метод, называемый ROLLBACK

общедоступный интерфейс 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(). Equals (ExitStatus.FAILED)) {

// Необходимо запустить откат() метод на MyTaskletJob

Мой вопрос заключается в том, чтобы вызвать метод метод отката(), когда JobExecution FAILED

ответ

0

Простым способом было бы использовать JobExecutionListener # afterJob (JobExecution). Вы можете ввести ссылку на ваш jobTaskletStep1 в слушатель. Оттуда вы можете проверить статус, установленный в JobExecution, и вызвать метод по мере необходимости.

+0

Да, это то, что я сделал, спасибо alot – Yosefarr

+0

Как я могу ввести ссылку на Job jobTaskletStep1 – Yosefarr

+0

Я не уверен, что я следую. –