стратегия весенних транзакций для интеграции компонентов - PullRequest
2 голосов
/ 24 января 2012

У нас типичная ситуация.

Параллельно разрабатываются два компонента 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 также должен использоватьпрограммная модель.

1 Ответ

0 голосов
/ 24 января 2012

Я бы добавил некоторый посредник, чтобы все взаимодействия между А и В проходили через один сервис (стратегия унифицированного управления TX). Кстати: вы можете использовать JmsTransactionManager для A. Подробнее о Spring TX Management здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...