Я надеюсь, что ваши сомнения могут быть уже ясны, но здесь есть дополнительная информация на этот случай.
Типичными ресурсами XA являются базы данных, продукты организации очередей обмена сообщениями, такие как JMS или WebSphere MQ, приложения для мэйнфреймов, пакеты ERP или что-либо еще, что может быть скоординировано с менеджером транзакций. XA используется для координации того, что обычно называется two-phase commit (2PC) transaction
. Классический пример транзакции 2PC - это когда две разные базы данных должны обновляться атомарно. Большинство людей думают о чем-то вроде банка, который имеет одну базу данных для сберегательных счетов и другую для чековых счетов. Если клиент хочет перевести деньги между своим текущим и сберегательным счетами, обе транзакции должны участвовать в транзакции, иначе банк рискует потерять часть денег.
Проблема в том, что большинство разработчиков думают: «Ну, мое приложение использует только одну базу данных, поэтому мне не нужно использовать XA в этой базе данных». Это не может быть правдой . Вопрос, который следует задать: «Does the application require shared access to multiple resources that need to ensure the integrity of the transaction being performed?
». Например, использует ли приложение адаптеры Java 2 Connector Architecture или службу сообщений Java (JMS)? If the application needs to update the database and any of these other resources in the same transaction, then both the database and the other resource need to be treated as XA resources.