数据流任务不适用于Spring Batch

时间:2017-11-30 10:06:24

标签: spring-batch spring-cloud-dataflow

我的Spring Batch job也是数据流task。当我运行这项工作时,一切似乎都没问题,在Tasks> Executions我可以看到任务已成功完成。另一方面,当我转到Jobs标签时,我收到此错误(在命令行中):

java.lang.NullPointerException: null
    at org.springframework.cloud.dataflow.server.service.impl.DefaultTaskJobService.getTaskJobExecution(DefaultTaskJobService.java:240) ~[spring-cloud-dataflow-server-core-1.2.2.RELEASE.jar!/:1.2.2.RELEASE]
    at org.springframework.cloud.dataflow.server.service.impl.DefaultTaskJobService.getTaskJobExecutionsForList(DefaultTaskJobService.java:233) ~[spring-cloud-dataflow-server-core-1.2.2.RELEASE.jar!/:1.2.2.RELEASE]
    at org.springframework.cloud.dataflow.server.service.impl.DefaultTaskJobService.listJobExecutions(DefaultTaskJobService.java:103) ~[spring-cloud-dataflow-server-core-1.2.2.RELEASE.jar!/:1.2.2.RELEASE]
    at org.springframework.cloud.dataflow.server.controller.JobExecutionController.list(JobExecutionController.java:91) ~[spring-cloud-dataflow-server-core-1.2.2.RELEASE.jar!/:1.2.2.RELEASE]
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_112]
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_112]
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_112]

Spring Dataflow版本= 1.2.2

1 个答案:

答案 0 :(得分:1)

我刚刚在几天前遇到过这个问题。获得空指针异常的原因是因为当您运行任务时,它的执行被插入到批处理和任务表中,但TASK_TASK_BATCH表除外。当您尝试访问DataFlow中的“作业”选项卡时,它会从此表中读取并找不到该记录,因此它会抛出空指针。

对我来说,根本原因是因为我从spring boot应用程序中删除了spring-boot-starter-parent(因为我需要自己提供)。在这样做的过程中,我删除了spring-cloud-starter-task依赖项,以换取spring-cloud-task-core,认为这是我需要看到的所有内容,因为它编译并且任务运行得很好。我最终发现的是,spring-cloud-starter-task不仅包含spring-cloud-task-core,还包含 spring-cloud-task-batch 和spring-cloud-任务流。就我而言,我错过了spring-cloud-task-batch,它将记录插入到TASK_TASK_BATCH表中。所以我只是删除了spring-cloud-task-core,并且重新添加了spring-cloud-starter-task来解决这个问题。

值得一提的是,人们还必须通过手动将这些丢失的记录添加到TASK_TASK_BATCH表或重置批处理/任务表/序列来修复数据。希望这有帮助!