web-dev-qa-db-ja.com

SpringBatchはジョブを停止します

SpringBatchでジョブを停止するにはどうすればよいですか?以下のコードを使用して、このメソッドを使用しようとしました。

public class jobListener implements JobExecutionListener{

  @Override
  public void beforeJob(JobExecution jobExecution) {
    jobExecution.setExitStatus(ExitStatus.STOPPED);

  }


  @Override
  public void afterJob(JobExecution jobExecution) {
    // TODO Auto-generated method stub

  }
}

COMPLETED、FAILEDも試しましたが、このメソッドは機能せず、ジョブは引き続き実行されます。解決策はありますか?

4
Alex

私はあなたが与えられた名前で仕事を止めたいと思っていると思います。これがコードです。

String jobName = jobExecution.getJobInstance().getJobName(); // in most cases
DataSource dataSource = ... //@Autowire it in your code
JobOperator jobOperator = ... //@Autowire it in your code
JobExplorerFactoryBean factory = new JobExplorerFactoryBean();
factory.setDataSource(dataSource);
factory.setJdbcOperations(new JdbcTemplate(dataSource));
JobExplorer jobExplorer = factory.getObject();
Set<JobExecution> jobExecutions = jobExplorer.findRunningJobExecutions(jobName);
jobExecutions.forEach(jobExecution -> jobOperator.stop(jobExecution.getId()));
0
naimdjon