Java Spring批处理在重新启动期间获取作业上下文值失败,该值是在失败之前设置的
我在db2服务器上使用spring批处理3。问题在于使用spring作业操作符重新启动失败的作业,作业上下文中的newFileStatus值为null。该值用于决定下一步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
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驱动程序
谢谢“作业上下文中的值为空”-这一点非常不清楚。从什么工作环境中获得什么价值。“你们必须更好地解释哪些值是不正确的,以及你们期望它们是什么。”吉姆·加里森修改了这个问题