Читаем Изучаем Java EE 7 полностью

• Менеджер ресурсов отвечает за управление ресурсами и их регистрацию в менеджере транзакций. Пример менеджера ресурса — драйвер для реляционной базы данных, ресурс JMS или коннектор Java.

• Ресурс — это постоянное хранилище, из которого вы можете читать или в который можете записывать данные (база данных, пункт назначения сообщения и т. п.).

Приложение не обязано следовать правилам ACID. Оно просто решает, фиксировать транзакцию или откатывать, а менеджер транзакций подготавливает все ресурсы для успешного осуществления этой операции.

Распределенные транзакции и XA

Как вы только что видели, операции с использованием одного ресурса (показанные на рис. 9.1) называют локальными транзакциями JTA. Однако многие корпоративные приложения используют несколько ресурсов. Возвращаясь к примеру перевода денежных средств, резервный и основной счета могут находиться в разных базах данных. В этом случае вам бы понадобилось управление транзакциями в нескольких ресурсах или же ресурсы должны были бы быть распределенными в вашей сети. Такие масштабные транзакции требуют специальных операций по координации при участии XA и службы транзакций Java (JTS).

На рис. 9.2 показано приложение, которое использует разграничение транзакций на нескольких ресурсах. Это означает, что в одной единице работы приложение может, например, сохранять данные в базу данных и отправить сообщение JMS.


Рис. 9.2. Транзакция XA, включающая в себя два ресурса


Для того чтобы транзакции надежно выполнялись для нескольких ресурсов, менеджеру транзакций требуется использовать интерфейс управления ресурсами XA (eXtendedArchitecture — расширенная архитектура). ХА — это стандарт, заданный группой Open Group (www.opengroup.org) для распределенной обработки транзакций (DTP) и обеспечивающий выполнение свойств ACID. Этот стандарт поддерживается JTA и позволяет гетерогенным менеджерам ресурсов разных производителей взаимодействовать через один интерфейс. XA использует механизм двухфазной фиксации (2pc), чтобы гарантировать, что все ресурсы либо зафиксированы, либо отменены для любой конкретной транзакции одновременно.

Для нашего примера перевода средств предположим, что деньги списываются с резервного счета из одной базы данных и транзакция завершается успешно. Далее на текущий счет, расположенный во второй базе, деньги зачисляются, но выполнить транзакцию не удается. Нам бы хотелось вернуться к первой базе данных и отменить зафиксированные изменения. Чтобы избежать этой проблемы несоответствия данных, двухфазная фиксация выполняет дополнительный подготовительный шаг перед окончательной фиксацией изменений, что показано на рис. 9.3. Во время фазы 1 каждый менеджер ресурсов получает уведомление с помощью команды «подготовки», которая говорит, что вот-вот будет произведена фиксация. Это позволяет менеджерам ресурсов объявить, могут ли они применить свои изменения. Если все они указывают, что готовы, транзакция разрешается и выполняется, а все менеджеры ресурсов должны выполнить фиксацию во второй фазе.


Рис. 9.3. Двухфазная фиксация


Большую часть времени ресурсы распределены по сети (рис. 9.4). Такая система использует службу JTS, которая реализует группу управления объектами (OMG) спецификации Object Transaction Service (OTS), что позволяет менеджеру транзакций участвовать в распределенных транзакциях с помощью протокола Internet Inter-ORB Protocol (IIOP).

По сравнению с рис. 9.2, где есть только один менеджер транзакций, на рис. 9.4 позволяется распространение распределенных транзакций с использованием IIOP. Текущая транзакция может быть распределена между различными компьютерами и различными базами данных от разных поставщиков. JTS предназначен для поставщиков, предоставляющих инфраструктуру систем транзакций. Как EJB-разработчику вам не придется беспокоиться об этом, просто используйте JTA, который взаимодействует с JTS на более высоком уровне.

Обзор спецификаций для работы с транзакциями

В Java EE 7, EJB и Managed Beans обрабатывают транзакции с помощью Java Transaction API (JTA), заданных в JSR 907. JTA определяет набор интерфейсов для приложений или контейнеров, предназначенных для транзакций с установленными границами. Кроме того, там определяется набор API, позволяющий работать с менеджером транзакций. Пакет javax.transaction задает эти интерфейсы.


Рис. 9.4. Распределенная транзакция XA


JTS — это спецификация, предназначенная для создания менеджера транзакций, который поддерживает интерфейсы JTA на высоком уровне и стандартное отображение в Java спецификации службы транзакций объектов CORBA 1.1 на низком уровне. JTS предоставляет возможность совместимости транзакций с использованием стандартного протокола CORBA IIOP для распространения транзакций между серверами. JTS предназначен для производителей, которые обеспечивают инфраструктуру системы транзакций для промышленного промежуточного ПО.

Перейти на страницу:

Похожие книги

C# 4.0: полное руководство
C# 4.0: полное руководство

В этом полном руководстве по C# 4.0 - языку программирования, разработанному специально для среды .NET, - детально рассмотрены все основные средства языка: типы данных, операторы, управляющие операторы, классы, интерфейсы, методы, делегаты, индексаторы, события, указатели, обобщения, коллекции, основные библиотеки классов, средства многопоточного программирования и директивы препроцессора. Подробно описаны новые возможности C#, в том числе PLINQ, библиотека TPL, динамический тип данных, а также именованные и необязательные аргументы. Это справочное пособие снабжено массой полезных советов авторитетного автора и сотнями примеров программ с комментариями, благодаря которым они становятся понятными любому читателю независимо от уровня его подготовки. Книга рассчитана на широкий круг читателей, интересующихся программированием на C#.Введите сюда краткую аннотацию

Герберт Шилдт

Программирование, программы, базы данных
97 этюдов для архитекторов программных систем
97 этюдов для архитекторов программных систем

Успешная карьера архитектора программного обеспечения требует хорошего владения как технической, так и деловой сторонами вопросов, связанных с проектированием архитектуры. В этой необычной книге ведущие архитекторы ПО со всего света обсуждают важные принципы разработки, выходящие далеко за пределы чисто технических вопросов.?Архитектор ПО выполняет роль посредника между командой разработчиков и бизнес-руководством компании, поэтому чтобы добиться успеха в этой профессии, необходимо не только овладеть различными технологиями, но и обеспечить работу над проектом в соответствии с бизнес-целями. В книге более 50 архитекторов рассказывают о том, что считают самым важным в своей работе, дают советы, как организовать общение с другими участниками проекта, как снизить сложность архитектуры, как оказывать поддержку разработчикам. Они щедро делятся множеством полезных идей и приемов, которые вынесли из своего многолетнего опыта. Авторы надеются, что книга станет источником вдохновения и руководством к действию для многих профессиональных программистов.

Билл де Ора , Майкл Хайгард , Нил Форд

Программирование, программы, базы данных / Базы данных / Программирование / Книги по IT