Java Spring批处理在重新启动期间获取作业上下文值失败,该值是在失败之前设置的

Java Spring批处理在重新启动期间获取作业上下文值失败,该值是在失败之前设置的,java,spring,spring-batch,spring-batch-admin,Java,Spring,Spring Batch,Spring Batch Admin,我在db2服务器上使用spring批处理3。问题在于使用spring作业操作符重新启动失败的作业,作业上下文中的newFileStatus值为null。该值用于决定下一步 if (BatchStatus.STARTED.equals(executions.getStatus())) { executions.setEndTime(new Date()); executions.setStatus(BatchStatus.FAILED); executions.setExi

我在db2服务器上使用spring批处理3。问题在于使用spring作业操作符重新启动失败的作业,作业上下文中的newFileStatus值为null。该值用于决定下一步

if (BatchStatus.STARTED.equals(executions.getStatus())) {
    executions.setEndTime(new Date());
    executions.setStatus(BatchStatus.FAILED);
    executions.setExitStatus(ExitStatus.FAILED);
    jobRepository.update(executions);
    logger.info("Restart Status : Restarted for Start Status ");
    jobOperator.restart(executions.getId());
} else if (BatchStatus.FAILED.equals(executions.getStatus())) {
    loadCache();
    logger.info("Restart Status : Restarted for Failed Status ");
    jobOperator.restart(executions.getId());
} else {// For COMPLETED AND UNKNOWN Status
    //New Run
}
并在tasket中重新启动后从上下文中获取值

@Override
public ExitStatus afterStep(StepExecution stepExecution) {
    logger.info("Step Execution Status : " +       this.stepExecution.getStatus());
    ExitStatus exitStatus;

    if (this.stepExecution.getStatus().equals(BatchStatus.FAILED)) {
        exitStatus = ExitStatus.FAILED;

    } else if (this.stepExecution.getStatus().equals(BatchStatus.COMPLETED)) {
        ExecutionContext jobContext = stepExecution.getJobExecution().getExecutionContext();
        boolean newFilesStatus = (Boolean) jobContext.get("newFilesArrived");
        //based on newFileStaus next step will be determined
        if(newFilesStatus){
            //return newStep
        }else{
            //skipe new step
        }

    return exitStatus;
}
数据库驱动程序-StarSql驱动程序


谢谢

“作业上下文中的值为空”-这一点非常不清楚。从什么工作环境中获得什么价值。“你们必须更好地解释哪些值是不正确的,以及你们期望它们是什么。”吉姆·加里森修改了这个问题