2015-01-14 45 views
0

目前,我堅持將Spring Batch Admin(SBA)集成到我們無法解決的問題的項目原因中。希望有人對我有建議。Spring批處理管理員現有的作業在新的工作登記後不再可啓動

我們使用示例SBA應用程序(Github的當前版本)並添加了一個Tasklet。我通過使用SBA的/job-configuration.json API上傳Spring批處理描述(XML)。這可以正常工作。在SBA的HTML頁面中,我看到該作業已註冊並可啓動。它可以通過API(/jobs/{jobName}.json)和Web界面執行。

問題是,如果我上傳一個新的作業,它也是註冊和啓動。但之前註冊的作業自動變爲「啓動= false」。它不能再被執行了。

我找不到有關此行爲的任何文檔,也無法避免任何解決方案。你能給我一個方向嗎?

在此先感謝。

UPDATE

我無法得到它的工作。我的解決方法是:

1)使用API​​方法(POST,mutipart)以/job-configuration將作業數據上載爲XML文件。這解決了多次上傳後作業仍然可以啓動的問題。 2)我手動將XML文件上傳到WEB-INF \ classes \ META-INF \ spring \ batch \作業,因此作業在重新開始後也是可執行的。

這不是很好,但工程。我仍然欣賞任何其他更優雅的解決方案。

+0

兩個問題:1,你有沒有在目錄驗證文件正被寫入,他們都在那裏? 2.這些工作是否有獨特的ID? –

+0

嗨。感謝您的回覆。 1)不,沒有寫入文件。正如我所見, – user3568265

+0

對不起,「進入」以快速... 嗨。感謝您的回覆。 1)不,沒有寫入文件。我可以看到,工作信息只存儲在數據庫中。他們應該在哪裏儲存?我識別了2個文件夾:a)WEB-INF \ classes \ META-INF \ spring \ batch \ jobs和b)batch.job.configuration.file.dir = target/config上傳之後,它們都未被觸動。 2)是的。喬布斯以及繼承步驟總是有唯一的ID。 – user3568265

回答

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()); 
} 
相關問題