Главная » Java, JavaBeans » Использование API транзакций EJB

0

Все транзакции используют Java Transaction API (JTA). Когда для управления транзакциями используется режим СМТ, границы

транзакции определяются автоматически и вызовы JTA API выполняются Контейнером; код вашего Компонента не содержит этих вызовов.

Если Компонент сам управляет своими транзакциями (ВМТ), то он должен использовать интерфейс javax.transaction.UserTransaction JTA. Этот интерфейс позволяет клиенту либо Компоненту обозначить границы транзакции. Компоненты EJB, которые используют ВМТ, получают этот интерфейс с помощью вызова метода ЕJBContext.getUserTransaction().

В дополнение к этому, все транзакционные клиенты для получения ссылки на этот интерфейс могут использовать JNDI. Для этого нужно создать начальный контекст JNDI, как показано в следующей строке кода:

javax.namig.Context context = new javax.naming.InitialContext(); После того, как создан объект InitialContext, для него вызывается метод JNDI lookup (), как показано ниже.

Пример Кода 8.1 Получение интерфейса UserTransaction

javax.transaction.UserTransaction utx = (javax.transaction.UserTransaction)

context.lookup("java:comp/UserTransaction"); Обратите внимание, что Компонент EJB может получить ссылку на интерфейс UserTransaction через объект EJBContext. Это возможно потому, что Компонент наследует ссылку на объект EJBContext. Таким образом, Компонент EJB может просто использовать метод EJBContext.getUserTransaction () вместо того, чтобы создавать InitialContext, а затем вызывать для него метод lookup (). Тем не менее, транзакционный клиент, который не является Компонентом EJB, должен использовать средства поиска JNDI.

Когда Компонент или клиент получает ссылку на интерфейс UserTransaction, он может затем стартовать свои собственные транзакции и управлять ими. Другими словами, Вы можете использовать методы интерфейса UserTransaction для начала, подтверждения или отката транзакции. Вы начинаете транзакцию с помощью метода begin (), а затем вызываете метод commit () для подтверждения внесенных изменений или метод rollbuck() для отмены всех изменений транзакции и восстановления состояния базы данных, которое существовало до начала транзакции. Вызовы методов, реализующих логику транзакции, помещаются между вызовами begin () и commit().

Источник: Руководство программиста Enterprise JavaBeans

По теме:

  • Комментарии