Here is the complete solution to restart the job after the JVM crashes.
- Make the job restartable by making Restarable = "true"
job id = "jobName" xmlns = "http://www.springframework.org/schema/batch" restartable = "true"
2. Code to restart the task
import java.util.Date; import java.util.List; import org.apache.commons.collections.CollectionUtils; import org.springframework.batch.core.BatchStatus; import org.springframework.batch.core.ExitStatus; import org.springframework.batch.core.JobExecution; import org.springframework.batch.core.JobInstance; import org.springframework.batch.core.explore.JobExplorer; import org.springframework.batch.core.launch.JobLauncher; import org.springframework.batch.core.launch.JobOperator; import org.springframework.batch.core.repository.JobRepository; import org.springframework.beans.factory.annotation.Autowired; public class ResartJob { @Autowired private JobExplorer jobExplorer; @Autowired JobRepository jobRepository; @Autowired private JobLauncher jobLauncher; @Autowired JobOperator jobOperator; public void restart(){ try { List<JobInstance> jobInstances = jobExplorer.getJobInstances("jobName",0,1);
3.
<bean id="jobRepository" class="org.springframework.batch.core.repository.support.JobRepositoryFactoryBean" p:dataSource-ref="dataSource" p:transactionManager-ref="transactionManager" p:lobHandler-ref="oracleLobHandler"/> <bean id="oracleLobHandler" class="org.springframework.jdbc.support.lob.DefaultLobHandler"/> <bean id="jobExplorer" class="org.springframework.batch.core.explore.support.JobExplorerFactoryBean" p:dataSource-ref="dataSource" /> <bean id="jobRegistry" class="org.springframework.batch.core.configuration.support.MapJobRegistry" /> <bean id="jobLauncher" class="org.springframework.batch.core.launch.support.SimpleJobLauncher"> <property name="jobRepository" ref="jobRepository" /> <property name="taskExecutor" ref="jobLauncherTaskExecutor" /> </bean> <task:executor id="jobLauncherTaskExecutor" pool-size="6" rejection-policy="ABORT" /> <bean id="jobOperator" class="org.springframework.batch.core.launch.support.SimpleJobOperator" p:jobLauncher-ref="jobLauncher" p:jobExplorer-re`enter code here`f="jobExplorer" p:jobRepository-ref="jobRepository" p:jobRegistry-ref="jobRegistry"/>
source share