Программирование BMT - UserTransaction - PullRequest
0 голосов
/ 02 января 2012

Полное ли программирование BMT основано на интерфейсе UserTransaction?Другими словами, если я хочу использовать BMT, есть ли сценарий, когда мне потребуется больше услуг, чем предусмотрено интерфейсом UserTransaction.

Почему возникает этот вопрос?Если я использую другую реализацию диспетчера транзакций (например, Bitronix TM или Atomikos), а не по умолчанию, предоставляемую контейнером, достаточно ли просто вставить новую TM в объект UserTransaction?

-Thanks

Ответы [ 2 ]

2 голосов
/ 02 января 2012

Это действительно ограничено тем, что позволит сам сервер приложений;т. е. если он явно поддерживает замену диспетчера транзакций.

Реальным искусством управления транзакциями является контейнер, регистрирующий транзакционные ресурсы (подключения к источникам данных, сеансы JMS, JPA EntityManager и т. д.) с помощью TransactionManager, заключая их в Синхронизация объектов и регистрация их в текущей транзакции через Transaction или TransactionSynchronizationRegistry

Контейнер реализует объекты Synchronization, TransactionManager реализуетTransaction и TransactionSynchronizationRegistry объекты.Координация между ними дает вам реальное управление во время выполнения транзакции.

BMT и CMT - это просто альтернативные способы сообщить контейнеру о начале / остановке транзакций.В некоторых отношениях термин «Bean-Managed» является ложным, поскольку UserTransaction на каждом совместимом сервере приложений будет реализован контейнером, и, таким образом, это все еще контейнер, выполняющий работу.Также «Управляемый контейнером» немного вводит в заблуждение, так как он все еще является разработчиком бина, который решает, когда транзакции запускаются / останавливаются, это просто делается декларативно, а не программно.Наиболее точным описанием этих функций будут транзакции с программным управлением и транзакции с декларативным управлением.Во всех случаях все еще бин общается с контейнером, а контейнер и менеджер транзакций выполняют всю работу.

Все это говорит о том, что у вас все еще может быть возможность изменить менеджер транзакций, OpenEJB и TomEE поддерживают егоОднако это не будет работать так, как вы пытаетесь.Узнайте у своего продавца, возможно ли это.

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

Возможно, не полностью отвечая на ваш вопрос, но если вы используете BMT, вам также разрешается использовать ресурсы локальных менеджеров транзакций.В этом случае вы не будете использовать (введенный) интерфейс UserTransaction.

Обратите внимание, что это допустимо, только если не выполняется транзакция, которая запускается через указанный интерфейс UserTransaction.

...