Java Batch重新启动不会处理步骤

时间:2018-08-09 16:39:52

标签: java spring-batch jsr352 jberet

重新启动作业时,不执行任何批处理,即不调用批处理的process()方法。

有人暗示为什么重新启动不执行任何批处理。我已经尝试了几乎所有组合,但都没有进行任何更改,以使重启正常工作。

这样的重启工作()不会带来错误-BUT成功终止而没有调用任何批处理process()方法。

我正在使用wildfly-13.0.0.Final和jBeret。

我有一个具有此jox.xml定义的简单Java批处理作业。当前,被调用的批处理仅能返回状态。

<job id="job" xmlns="http://xmlns.jcp.org/xml/ns/javaee" version="1.0" restartable="true">
    <flow id="processing">
        <step id="download" next="process">
            <batchlet ref="download"/>
        </step>
        <step id="process" next="notify">
            <batchlet ref="process"/>
            <stop on="STOPPED" restart="notify" />
        </step>
        <step id="notify">
            <batchlet ref="noify"/>
            <end on="COMPLETED"/>
        </step>
    </flow>
</job>

小行政区的返回值为:

  • 下载...已完成
  • 过程...已停止
  • 通知...已完成

jobOperator.start()开始这项工作时,一切正常。

使用jobOperator.restart()重新启动已停止的作业执行时,作业将被执行,但未调用任何批处理。

小批看起来像这样

@Named
public class Notify extends AbstractBatchlet {
    @Override
    public String process() throws Exception {
        return BatchStatus.COMPLETED.toString();
    }
    @Override
    public void stop() throws Exception {
    }
}

1 个答案:

答案 0 :(得分:1)

重新启动属性将notify作为值,这是流中的步骤名称。可能是在重新启动期间,JBeret正在寻找一个名为notify的顶级步骤,该步骤显然不存在。