JSR 352 重新开始工作?

JSR 352 Restarting a job?

重新启动作业时,只有失败的分区会再次 运行。我如何 运行 再次成功完成作业?

重新提交作业和重启作业有区别吗?

我正在 Websphere Liberty 上使用 IBM 的 JSR 352 实现。

Java 批处理的设计使得当您重新启动一个作业实例时,从您中断的地方继续执行(在之前失败或停止的执行中)。

所以通常这意味着两件事:

  1. 在作业中,您从先前失败的步骤(或作业停止的步骤)开始。
  2. 在该步骤中,您首先使用批处理容器保存的检查点值定位输入光标。

因此,如果在初始执行时您完成了 step1,然后在 step2 记录 #4123 处失败,并且每 100 条记录检查一次,然后在重新启动时,您通常会在记录 #4100 处的 step2 处开始执行。

在某些情况下,有必要在重新启动时执行 step1,然后再执行之前作业失败的 step2,并且也可以选择获得此行为。

经常按计划重复submit/start一项工作是很典型的。

根据批处理规范,每次启动作业时都会创建一个新的 JobInstance。此时,此 JobInstance 的初始 JobExecution 已创建。如果执行未 运行 完成,实例可能会重新启动,此时会为此 JobInstance 创建第二个 JobExecution

因此,重新启动使用前一个 JobExecution 的检查点和执行历史记录,而重新启动则从头开始。