如果春季批次成功或不通过退出状态,我试图与调用者建立联系。
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进程继续运行。
答案 0 :(得分:0)
我会通过CommandLineJobRunner
启动您的工作,而不是通过命令行启动您的工作的自定义代码。它会为您处理System.exit()
。
GrepCode link如果你想看看他们是怎么做的