目前,我仍然坚持将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 ,因此,这些作业在重新开始之后也是可执行的。
它不好,但有效。我仍然感谢任何其他更优雅的解决方案。
答案 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());
}