【发布时间】:2016-11-04 16:31:29
【问题描述】:
我正在尝试修复从 shell 脚本启动的 spring-batch 作业。然后该脚本检查进程退出代码以确定作业是否成功。但是,即使程序以异常结束,Java 也会退出 0,除非使用不同的代码专门调用 System.exit,因此脚本总是报告成功。
有没有办法让 spring-batch 在失败时返回非零代码?需要说明的是,我说的不是 ExitStatus 或 BatchStatus,而是 java 进程的实际退出代码。
如果没有办法告诉 spring-batch 返回非零值,我是否可以在 Tasklet(或 Listener)中安全地使用 System.exit 而不会干扰 spring-batch 在异常后所做的任何事情?
如果做不到这一点,任何人都可以提出一种方法来将 BatchStatus 或其他一些失败指示返回到 shell 脚本吗?
【问题讨论】:
-
是的,我想用 tasklet 中的代码调用 System.exit 应该没问题
-
我想说我们应该在 JobExecutionListener 的 afterJob() 方法中更新 JobExeuction 对象的 BatchStatus 属性。 Shell Script 将完美地捕捉返回码。
-
感谢@NghiaDo,这行得通。
-
太棒了。请将它标记为好,以便大家知道。
标签: java spring-batch