пользователей: 30398
предметов: 12406
вопросов: 234839
Конспект-online
РЕГИСТРАЦИЯ ЭКСКУРСИЯ


Архитектура совместного использования WEB и EJB компонентов, Доступ к компонентам EJB из различных приложений клиента (web, Console, GUI), Ejb-транзакции. Примеры

Участниками транзакции с точки зрения JTA являются: ресурс, под которым понимается соединение с базой данных; менеджер ресурсов – драйвер JDBC;сервер приложений – Сервер EJB;менеджер транзакций и транзакционное приложение, т.е. компонент или клиент.

Управлять транзакциями может как компонент, так и контейнер.

Транзакция, управляемая компонетом (Bean Managed Transaction, BMT)

Управление транзакцией берет на себя компонент. Только Session-компоненты могут использовать такой режим. Только в этом режиме вызов одного из удаленных методов может привести к началу транзакции, но не обязательно к ее завершению – несколько последующих вызовов могут происходить в контекст этой же транзакции.

Транзакция, управляемая Контейнером (Container Managed Transaction, CMT)

Режим разрешен как для Session-, так и для Entity-компонентов. Компонент не имеет возможности ни начать, ни завершить транзакцию (хотя любой из участников транзакции может потребовать ее отката (rollback) при завершении) – управление транзакцией полностью берет на себя Контейнер. Транзакция начинается при вызове каждого удаленного метода и завершается при возврате из него. Программист может установить один из нескольких разрешенных режимов, определяющих поведение транзакции.

Доступ к компонентам EJB из различных приложений клиента (web, Console, GUI)

Когда у клиента EJB возникает потребность воспользоваться услугами EJB, он с помощью home-интерфейса создаёт EJB. Клиент использует один из методов create(), которые определяет home-интерфейс. Реализация home-интерфейса осуществляется с помощью объекта, называющегося home-объектом. Экземпляр такого home-объекта создаётся на сервере и в качестве factory (построителя) предоставляется клиенту для создания бина.

Пример разработки клиентского приложения

Первое, что должно выполнить клиентское приложение - это получить доступ к home-интерфейсу для Компонента SortBean. Делается это с помощью вызова методов JNDI API. Как показано в Примере SortClient создает контекст имен JNDI, а затем использует его метод lookup для поиска home-интерфейса для "sort":

Пример: Фрагмент кода SortClient

// SortClient Java

public class SortClient {

public static void main(String[] args) throws Exception

// Получение контекста JNDI с помощью JNDI службы Указания Имен:

{ javax.naming.Context context; //переменная контекста

{ // get a JNDI context using the Naming service

context = new javax.naming.InitialContext(); }//получить контекст JNDI

// Поиск Домашнего интерфейса в службе JNDI Naming:

Object objref = (SortHome) context.lookup("sort");

// Приведение удаленного объекта к домашнему итерфейсу:

SortHome home = (SortHome) javax.rmi.PortableRemoteObject.narrow(objref, SortHome.class);

// Создание удаленного объекта из домашнего интерфейса:

Sort sort = home.create(); ... //do the sort and merge work sort.remove();

// Далее вызов методов sort () и/или merge ()

После получения ссылки на интерфейс SortHome, клиент может вызвать его метод create () для получения ссылки на remote-интерфейс Sort. Получив эту ссылку, клиент может вызывать его методы sort () и merge () так же, как он мог бы обращаться к любым другим методам. На самом деле remote-интерфейс перенаправляет вызовы клиента собственно Компоненту EJB.


28.05.2018; 15:28
хиты: 766
рейтинг:0
для добавления комментариев необходимо авторизироваться.
  Copyright © 2013-2024. All Rights Reserved. помощь