新作业注册后,Spring Batch Admin现有作业不再可以启动

时间:2015-01-14 13:55:45

标签: spring-batch spring-batch-admin

目前,我仍然坚持将Spring Batch Admin(SBA)集成到我们无法解决的问题的项目中。希望有人对我有建议。

我们使用示例SBA应用程序(来自Github的当前版本)并添加了一个Tasklet。我使用SBA的 /job-configuration.json API上传Spring Batch描述(XML)。这可以正常工作。在SBA的HTML页面中,我看到作业已注册且可以启动。它可以通过API(/jobs/{jobName}.json)和Web界面执行。

问题是,如果我上传新作业,它也会被注册并可以启动。但之前注册的工作会自动变为" launchable = false "。它不能再被执行了。

我无法找到有关此行为的任何文档,也无法避免任何解决方案。你能告诉我一个可能出错的方向吗?

提前致谢。

更新

我无法让它发挥作用。我的解决方法现在是

1)使用 / job-configuration API方法(POST,mutipart)将作业数据上传为XML文件。这解决了多次上传后作业仍然可以启动的问题。

2)我手动将XML文件上传到 WEB-INF \ classes \ META-INF \ spring \ batch \ jobs ,因此,这些作业在重新开始之后也是可执行的。

它不好,但有效。我仍然感谢任何其他更优雅的解决方案。

1 个答案:

答案 0 :(得分:0)

您可以将作业工厂注册到JobRegistry

@Autowired
private JobRegistry jobRegistry;

protected JobFactory factory;

@PostConstruct
public void init() throws DuplicateJobException {
    factory = new JobFactory() {

        @Override
        public Job createJob() {
            return job();   //your job creation logic
        }

        @Override
        public String getJobName() {
            return jobName();   
        }

    };
    jobRegistry.register(factory);
}

//for your own launcher
protected void run() throws Exception {
    jobLauncher.run(factory.createJob(), parameters().toJobParameters());
}