Как уже упоминал Даффи, JTA не является синонимом двухфазной фиксации, что делается через протокол XA.
Например, в JBoss AS вы можете явно указать, хотите ли вы, чтобы данный источник данных был источником данных xa или источником данных tx. В обоих случаях транзакции управляются через JTA.
В некоторых случаях вы уже могли использовать JTA, не зная об этом. Если вы отправляете JMS-сообщение транзакционно или обновляете транзакционный кеш в той же транзакции, где вы что-то изменяете в базе данных, менеджер транзакций автоматически переключается в режим XA. Источником данных, представляющим вашу БД, может быть не XA, но в транзакции XA 1 разрешено быть ресурсом не-XA. Обновление этого ресурса происходит через last resource commit optimization
.
Хотя вы всегда должны рассчитывать риски и проверять себя, я хочу предостеречь от необоснованного страха. XA кажется одной из тех вещей, которые мы, разработчики, внушали страху. Недавно на форуме JBoss было интересное обсуждение этого вопроса: когда использовать источник данных xa .
Дело в том, что XA, возможно, была сложной технологией с реализациями, не соответствующими стандартам, в прошлом, но спустя почти полтора десятилетия после этого FUD это может быть уже не так. То, что было сложным делом крупного предприятия в 1995 году, - это ваш общий опыт работы на мельнице в 2011 году.
Сравните это со страхом, который мы когда-то воспитывали для EJB, который больше не имеет никакого отношения, или страхом перед виртуальными машинами (очевидно, не проблема для Java-программистов), или когда вы действительно участвуете в этой отрасли долгое время страх делать что-то основное, как вызовы функций;)