Использование произвольных ресурсов с JTA - PullRequest
3 голосов
/ 18 июля 2011

Можно ли сделать какой-либо пользовательский ресурс транзакционным с JTA?Давайте возьмем базовый пример и возьмем создание папки, которое следует откатить в случае ошибки.

Можно ли обрабатывать такие пользовательские ресурсы?

1 Ответ

9 голосов
/ 18 июля 2011

Да. Этот ресурс должен обеспечивать реализацию XAResource , и экземпляр этой реализации должен быть зачислен с транзакцией при использовании ресурса. Ресурс может получить текущую транзакцию от менеджера транзакций , чтобы выполнить регистрацию при обращении к ней (я думаю).

Вы можете посмотреть код XADisk , который, по-видимому, является файловым менеджером XA-транзакций, чтобы увидеть, как это делается там.

Однако общий подход к выполнению этой задачи в мире J2EE заключается не в непосредственном взаимодействии с JTA, а в написании адаптера ресурсов с использованием JCA , который позволяет контейнеру J2EE обрабатывать не только транзакции, но и пулы. , именование и другие подробности. Однако API-интерфейс JCA не совсем прост и, как ни сложно, его защищает множество еще более сложных документов, главной целью которых, как представляется, является предотвращение его понимания!

...