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

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

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

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

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

Как вы только что видели, операции с использованием одного ресурса (показанные на рис. 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 на более высоком уровне.

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

В 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 предназначен для производителей, которые обеспечивают инфраструктуру системы транзакций для промышленного промежуточного ПО.

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

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

1С: Бухгалтерия 8 с нуля
1С: Бухгалтерия 8 с нуля

Книга содержит полное описание приемов и методов работы с программой 1С:Бухгалтерия 8. Рассматривается автоматизация всех основных участков бухгалтерии: учет наличных и безналичных денежных средств, основных средств и НМА, прихода и расхода товарно-материальных ценностей, зарплаты, производства. Описано, как вводить исходные данные, заполнять справочники и каталоги, работать с первичными документами, проводить их по учету, формировать разнообразные отчеты, выводить данные на печать, настраивать программу и использовать ее сервисные функции. Каждый урок содержит подробное описание рассматриваемой темы с детальным разбором и иллюстрированием всех этапов.Для широкого круга пользователей.

Алексей Анатольевич Гладкий

Программирование, программы, базы данных / Программное обеспечение / Бухучет и аудит / Финансы и бизнес / Книги по IT / Словари и Энциклопедии
1С: Управление торговлей 8.2
1С: Управление торговлей 8.2

Современные торговые предприятия предлагают своим клиентам широчайший ассортимент товаров, который исчисляется тысячами и десятками тысяч наименований. Причем многие позиции могут реализовываться на разных условиях: предоплата, отсрочка платежи, скидка, наценка, объем партии, и т.д. Клиенты зачастую делятся на категории – VIP-клиент, обычный клиент, постоянный клиент, мелкооптовый клиент, и т.д. Товарные позиции могут комплектоваться и разукомплектовываться, многие товары подлежат обязательной сертификации и гигиеническим исследованиям, некондиционные позиции необходимо списывать, на складах периодически должна проводиться инвентаризация, каждая компания должна иметь свою маркетинговую политику и т.д., вообщем – современное торговое предприятие представляет живой организм, находящийся в постоянном движении.Очевидно, что вся эта кипучая деятельность требует автоматизации. Для решения этой задачи существуют специальные программные средства, и в этой книге мы познакомим вам с самым популярным продуктом, предназначенным для автоматизации деятельности торгового предприятия – «1С Управление торговлей», которое реализовано на новейшей технологической платформе версии 1С 8.2.

Алексей Анатольевич Гладкий

Финансы / Программирование, программы, базы данных