2012-03-12 4 views
5

私はバネの統合+バッチアプリケーションを持っています。スプリング統合とバッチトランザクションの(スプリングバッチジョブの)すべてのメソッドのデフォルト分離レベルがSERIALIZABLEに設定されているのはなぜですか?

統合は、inbounチャネルアダプタを使用してファイルを読み取り、バッチジョブを呼び出すために使用されます。 はjobRepositoryから定義されています org.springframework.batch.core.repository.support.JobRepositoryFactoryBean

トランザクションマネージャorg.springframework.orm.jpa.JpaTransactionManagerです。

アプリケーションは、しかし、私はコンフィギュレーションのこの奇妙な種類を読んで、なぜ私にはわからない始まり

は:

[5860] [2012-03-12 17:40:47,267] D [main] [org.springframework.transaction.interceptor.NameMatchTransactionAttributeSource] Adding transactional method [*] with attribute [PROPAGATION_REQUIRED,ISOLATION_DEFAULT] 
[5860] [2012-03-12 17:40:47,267] D [main] [org.springframework.transaction.interceptor.NameMatchTransactionAttributeSource] Adding transactional method [create*] with attribute [PROPAGATION_REQUIRES_NEW,ISOLATION_SERIALIZABLE] 
[5860] [2012-03-12 17:40:47,267] D [main] [org.springframework.transaction.interceptor.NameMatchTransactionAttributeSource] Adding transactional method [getLastJobExecution*] with attribute [PROPAGATION_REQUIRES_NEW,ISOLATION_SERIALIZABLE] 

デフォルトごとjobmethodがSERIALIZABLE分離して構成されているようですが、私はそれを設定しませんでしたどこにもない。 デフォルトの分離レベルをISOLATION_DEFAULTとして設定する方法はありますか?

答えて

4

デフォルトでは、同じジョブインスタンスが2つ以上のボックスで同時に実行されないようにSERIALIZABLEです。これがあなたの心配でない場合は、リラックスすることができます。

http://static.springsource.org/spring-batch/reference/html/configureJob.html#txConfigForJobRepository

isolation-level-for-create 

属性は、*とgetLastJobExecution *メソッドを作成するための伝播を制御

+1

注釈@EnableBatchProcessingを使用しているとき、私はこれを行うにはどうすればよいですか? –

+1

この場合、独自のBatchConfigurerを用意する必要があります。 DefaultBatchConfigurerを拡張し、createJobRepository()をオーバーライドすることができます。 –

+1

@ gary-russellジョブインスタンスが2つ以上のボックスで同時に実行されないようにするにはどうすればよいですか?トランザクションSERIALIZABLEはオプションではありません。私は次のクラスを探していて、次のアプリケーションを探していました:org.springframework.batch.core.repository.dao.JdbcJobInstanceDao.jobIncrementer – svlada

関連する問題