通过JobOperator

时间:2017-11-17 18:34:53

标签: java java-ee java-ee-7 jsr352

我试图阻止来自托管bean的一个作业执行。更具体地说,我能够获取作业实例并停止作业实例,如下所示:

        JobOperator operator  = BatchRuntime.getJobOperator();
        List<Long> re = operator.getRunningExecutions("JobName");
        for (Long runningExecution: re) {
            operator.stop(runningExecution);
        } 

即便如此,它仍然不会继续运行实例的执行。事实上,如果我尝试再次获取作业实例,则不可能,因为有效方法getRunningExecutions不返回任何元素。通过这种方式,谁能告诉我我做错了什么?

提前谢谢。

1 个答案:

答案 0 :(得分:0)

getRunningExecutions返回空,因为作业执行可能处于STOPPING状态,因此不再考虑运行执行。

尝试在每个作业执行时调用getBatchStatus()以检查确切的批处理状态。如果当前步骤是批处理类型步骤,则batchlet类应实现stop()方法以正确停止工作。