У нас типичная ситуация.
Параллельно разрабатываются два компонента java-сервиса.
Допустим, A и B. A - это JMS-приложение, которое получает сообщение из очереди и выполняет некоторые действия.обработка бизнес-правил.A использует B для сохранения базы данных.B выполняет все операции с базой данных.
Таким образом, это означает, что методы B всегда вызываются из A.A разработан с использованием WebsphereUowTransactionManager
(специфичный для сервера подкласс JtaTransactionManager), а B использует JpaTransactionManager.A использует программную модель транзакции (да, она нам нужна), а B использует декларативную модель (аннотация @Transaction).Оба были разработаны с использованием отдельных конфигураций компонентов.
Теперь, в процессе интеграции, мы сталкиваемся с исключениями транзакций.Я полагаю, что это связано с несовпадением моделей транзакций A и B. Теоретически, B будет использовать транзакционный контекст A, который является программным.Это делает декларативную модель B. избыточной.
Итак, вопрос в том, какой должна быть правильная стратегия комбинированных транзакций для интеграции A и B?
Мое понимание - A использует программные транзакции, поэтому B также должен использоватьпрограммная модель.