Java Platform, Enterprise Edition (Java EE) 8
Учебник по Java EE

Назад Вперёд Содержание

Параллелизм и транзакции

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

Обеспечение успешного выполнения операции отката в таком сценарии имеет решающее значение. Утилиты параллелизма используют API транзакций Java (JTA) для реализации и поддержки транзакций в своих компонентах через javax.transaction.UserTransaction, позволяя разработчикам приложений явно управлять границами транзакций. Более подробная информация доступна в спецификации JTA.

Опционально, объекты контекста могут начинать, фиксировать или откатывать транзакции, но эти объекты не могут присоединяться к транзакциям родительских компонентов.

Следующий фрагмент кода иллюстрирует задачу Runnable, которая получает UserTransaction, а затем запускает и фиксирует транзакцию при взаимодействии с другими транзакционными компонентами, такими как Enterprise-бин и база данных:

public class MyTransactionalTask implements Runnable {

   UserTransaction ut = ... // получение объекта через JNDI или инъецирование

   public void run() {

       // Старт транзакции
       ut.begin();

       // Вызов сервиса или EJB
       myEJB.businessMethod();

       // Обновление базы данных и использованием XA JDBC driver
       myEJB.updateCustomer(customer);

       // Фиксация транзакции
       ut.commit();

   }
}

Назад Вперёд Содержание
Логотип Oracle  Copyright © 2017, Oracle и/или её дочерних компаний. Все права защищены. Версия перевода 1.0.5 (Java EE Tutorial — русскоязычная версия)