0

目前,我坚持将 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,因此,重新启动后作业也可以执行。

这不好,但有效。我仍然欣赏任何其他更优雅的解决方案。

4

1 回答 1

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());
}
于 2015-12-23T08:30:41.237 回答