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 に答える