Spring boot Spring boot批处理作业-退出代码/返回代码

Spring boot Spring boot批处理作业-退出代码/返回代码,spring-boot,spring-batch,Spring Boot,Spring Batch,我在外部Tomcat上部署了一个Spring引导批处理应用程序。shell脚本应该调用批处理作业并返回退出代码(成功时为0,失败时为非零)。我已经在下面实现了,但即使批处理失败,我在shell脚本中也得到了0个返回代码。想知道Spring推荐的管理这些错误代码的方法是什么。请建议 if (jobExecution.getStatus() == BatchStatus.COMPLETED) { jobExecution.setExitStatus(new ExitStatu

我在外部Tomcat上部署了一个Spring引导批处理应用程序。shell脚本应该调用批处理作业并返回退出代码(成功时为0,失败时为非零)。我已经在下面实现了,但即使批处理失败,我在shell脚本中也得到了0个返回代码。想知道Spring推荐的管理这些错误代码的方法是什么。请建议

if (jobExecution.getStatus() == BatchStatus.COMPLETED) {
            jobExecution.setExitStatus(new ExitStatus("0"));
        } else {
            jobExecution.setExitStatus(new ExitStatus("1"));
        }  
期望shell脚本调用批处理作业并返回退出代码(成功时为0,失败时为非零)

如果在以下情况下运行应用程序,则这应为默认设置:

    System.exit(SpringApplication.exit(SpringApplication.run(MyApplication.class, args)));
如果要自定义退出代码,需要定义一个
ExiteCodeGenerator
。以下是一个例子:

@SpringBootApplication
public class ExitCodeApplication {

   @Bean
   public ExitCodeGenerator exitCodeGenerator() {
      return () -> 42;
   }

   public static void main(String[] args) {
           System.exit(SpringApplication.exit(SpringApplication.run(ExitCodeApplication.class, args)));
   }

}

您可以在中找到更多详细信息。

谢谢您,马哈茂德。我的Spring引导批处理作为war部署在Tomcat容器上,希望确保即使批处理失败,应用程序仍能继续运行。在控制器中定义退出代码如何?根据shell脚本,我进行http调用,并在批处理完成时获得0/非零状态。