Re: [spring] Одна транзакция на несколько потоков
От: Blazkowicz Россия  
Дата: 11.01.12 12:59
Оценка:
Здравствуйте, A13x, Вы писали:

A>Хочется следующего:


A>Стартуем глобальную транзакцию в рамках некоторого "основного" потока.

A>В рамках этой транзакции работают несколько "дочерних" потоков, "основной" поток ожидает завершения каждого из "дочерних".
A>После этого делается в рамках "основного" потока rollback или commit на глобальную транзакцию.

A>Знаю, что в JTA, похоже, это возможно — "Multiple threads may concurrently be associated with the same global transaction." — JTA spec v1.1, section 3.2, page 13, но я работаю с обычным сервлетом (и, соответственно, контейнером сервлетов) и не могу использовать Application Server.


A>Используется обычный спринговый DataSourceTransactionManager.

A>Как это сделать на нем?

Не очень понятно какая у вас инфраструктура. JTA это абстрактный механизм, поддерживающий множество транзакционных ресурсов.
JDBC транзакция это уже отдельная тема. Для начала расскажите как это у вас должно работать. Потому что Connection в JDBC он не thread safe. И, AFAIK, транзакция БД всегда привязана к одному соединению.
Поэтому в рамках одной транзакции всег обращения к базе придется сериализовать в ручную. Соответственно становится не понятно зачем тогда многопоточность?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.