2012-02-03 11 views
0

私は複数のジョブを実行しています。ジョブごとに別々のジョブリポジトリ(インメモリ実装)を用意したいと思います。スプリングバッチ:ジョブごとにジョブリポジトリを設定する方法

私が試した豆の定義を以下に見てください。スコーププロトタイプを持つBeanを指定しようとしました。

java.lang.IllegalArgumentException: JobExecution must already be saved例外が発生します。

<bean id="jobLauncher" 
     class="org.springframework.batch.core.launch.support.SimpleJobLauncher"> 
    <property name="jobRepository" ref="jobRepository" /> 
</bean> 

<bean id="jobRepository" 
     class="org.springframework.batch.core.repository.support.SimpleJobRepository" 
     scope="prototype"> 
    <constructor-arg> 
    <bean class="org.springframework.batch.core.repository.dao.MapJobInstanceDao"/> 
    </constructor-arg> 
    <constructor-arg> 
    <bean class="org.springframework.batch.core.repository.dao.MapJobExecutionDao" /> 
    </constructor-arg> 
    <constructor-arg> 
    <bean class="org.springframework.batch.core.repository.dao.MapStepExecutionDao"/> 
    </constructor-arg> 
    <constructor-arg> 
    <bean class="org.springframework.batch.core.repository.dao.MapExecutionContextDao"/> 
    </constructor-arg> 
</bean> 
+0

ジョブリポジトリが一度作成され、ご利用のプロトタイプかどうかは問題ではありませんので、あなたは、ジョブを実行するのですかもう少し説明することができますか? –

+0

これを行うには、独自のJobLauncher実装(およびその他の実装)を作成する必要があるでしょう。 @Michael Langeは、この場合、 'シングル'ジョブレポを作成するシングルトンシンプルジョブランチャーを作成しているため、正しいです。あなたがこれをしようとしている場合は、ジョブごとに少なくとも1つのランチャーを必要とします。 –

+0

なぜジョブごとにレポをしようとしていますか? –

答えて

1

ユニットテストjobRepositoryとして:

<bean id="jobRepository" 
    class="org.springframework.batch.core.repository.support.MapJobRepositoryFactoryBean"> 
</bean> 
関連する問題