Интеграция Spring + Транзакции + Bitronix

У меня есть веб-приложение на основе Java. Я использую Spring Integration для интеграции с базой данных (исходящий адаптер Jpa) и Tibco EMS (исходящий адаптер JMS). Однако теперь мне нужно поместить некоторый код, в котором одно и то же сообщение должно быть 1. сохранено в базе данных и 2. отправлено через JMS.

Проблема в том, что эти действия (1 и 2) должны выполняться в транзакции. Либо происходит то и другое, либо ничего. Я пытаюсь добиться этого с помощью Bitronix. Однако на данный момент мне не удалось это сделать. Я получаю сообщения об ошибках, которые на простом английском языке означают (извините за мой перевод здесь) «мы не можем выполнить транзакцию за пределами транзакции XA.

Кто-нибудь пробовал это раньше. Любая помощь будет оценена.

Спасибо,


person partha    schedule 02.01.2013    source источник


Ответы (2)


Я не знаком с Bitronix, но видел успешное использование jotm и Atomikos.

Однако вы можете изучить альтернативы использованию XA, как описано в этой статье...

http://www.javaworld.com/javaworld/jw-01-2009/jw-01-spring-transactions.html

person Gary Russell    schedule 02.01.2013

Я не уверен, какая у вас конфигурация для настройки битроникса, если вы поделитесь примером кода конфигурации, который поможет понять проблему.

Что касается вашего вопроса, похоже, битроникс настроен неправильно. вам следует пройти по ссылке ниже, чтобы проверить или настроить конфигурацию Bitronix.

https://github.com/bitronix/btm/blob/master/btm-docs/src/main/asciidoc/TomcatWithBtm2x.adoc

еще одна вещь, если вы настраиваете битроникс через jndi, обязательно исключите все jar, связанные с транзакциями, из вашей сборки maven и поместите jar, связанные с транзакциями и bitronix, в папку lib.

person S Boot    schedule 26.12.2016