Стартуем глобальную транзакцию в рамках некоторого "основного" потока.
В рамках этой транзакции работают несколько "дочерних" потоков, "основной" поток ожидает завершения каждого из "дочерних".
После этого делается в рамках "основного" потока rollback или commit на глобальную транзакцию.
Знаю, что в JTA, похоже, это возможно — "Multiple threads may concurrently be associated with the same global transaction." — JTA spec v1.1, section 3.2, page 13, но я работаю с обычным сервлетом (и, соответственно, контейнером сервлетов) и не могу использовать Application Server.
Используется обычный спринговый DataSourceTransactionManager.
Как это сделать на нем?