来自Spring批处理的System.exit(1)

时间:2016-04-27 09:25:14

标签: java spring spring-batch

如果春季批次成功或不通过退出状态,我试图与调用者建立联系。

SpringApplication app = new SpringApplication(Foo.class);
app.setWebEnvironment(false);
ConfigurableApplicationContext ctx= app.run(args);
SimpleJobLauncher jobLauncher = ctx.getBean(SimpleJobLauncher.class);
Job job = ctx.getBean("Foo", Job.class);
JobParameters jobParameters = new JobParametersBuilder().toJobParameters();
try {
      //test
      JobExecution jobExec = jobLauncher.run(job, jobParameters);
      if(ExitStatus.FAILED.equals(jobExec.getExitStatus())){
            System.exit(1);
}catch(JobExecutionAlreadyRunningException | JobRestartException | JobInstanceAlreadyCompleteException
                | JobParametersInvalidException e) {
            logger.error("Exception in Foo"+e,e);
            System.exit(-1);
        }

但是程序没有将值返回给调用者。我从Unix脚本调用程序,Unix进程继续运行。

1 个答案:

答案 0 :(得分:0)

我会通过CommandLineJobRunner启动您的工作,而不是通过命令行启动您的工作的自定义代码。它会为您处理System.exit()

GrepCode link如果你想看看他们是怎么做的