【问题标题】:JSR 352 Restarting a job?JSR 352 重新开始工作?
【发布时间】:2016-04-21 20:03:42
【问题描述】:

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

再次提交作业和重新开始作业有区别吗?

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

【问题讨论】:

  • 这回答了你的问题吗?
  • 是的!因为我没有足够的声誉,所以我不能赞成你的回答。但是非常感谢你:)
  • 没问题。很高兴能提供帮助,因为您是该网站的新手,所以只提到了对另一个问题的支持。 (我认为您仍然可以接受答案)。
  • 你找到如何在自定义编写器中维护检查点了吗?我正在寻找一些例子

标签: java batch-file jsr352


【解决方案1】:

Java Batch 的设计目的是,当您重新启动作业实例时,执行会从您停止的地方继续执行(在上一次失败或停止的执行中)。

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

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

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

在某些情况下,在执行之前作业失败的 step2 之前,还需要在重新启动时执行 step1,并且可以选择获取此行为也是。

通常按计划重复提交/启动作业。

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

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

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-19
  • 2014-12-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多