首页 文章

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

提问于
浏览
0

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

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

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

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

提前致谢 .

UPDATE

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

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

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

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

1 回答

  • 0

    您可以将Job factory注册到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());
    }
    

相关问题