2012-03-12 1 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

По умолчанию это SERIALIZABLE, чтобы один и тот же экземпляр экземпляра выполнялся одновременно на 2 или более ящиках. Вы можете расслабиться, если это не заботит вас.

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

 Смежные вопросы

  • Нет связанных вопросов^_^