Главная » Java, Web » Архитектура EJB

0

Базовая архитектура EJB представлена набором, состоящим из сервера EJB, контейнеров EJB, EJB-клиентов, компонентов EJB, используется также сервис имен, например, JNDI. Компонент EJB обслуживается окружением, создаваемым контейнером EJB, контейнер EJB располагается на EJB- сервере (рис. 5.35). Клиент не может вызвать методы компонента EJB непосредственно на самом серверном компоненте EJB, контейнер служит своеобразным посредником между компонентом EJB и клиентом (табл. 5.3).

Таблица 5.3. Функции элементов архитектуры EJB

Элемент

Назначение

архитектуры

 

Сервер EJB

EJB-сервер — это набор программных средств. В чем-то он сродни

 

объектному брокеру в архитектуре CORBA. Сервер предоставляет

 

клиенту возможность взаимодействовать с компонентами EJB.

 

Сервер предоставляет сервис имен

Таблица 5.3 (окончание)

Элемент

Назначение

архитектуры

 

Контейнер

Располагается на сервере EJB как его составной элемент. Предос

EJB

тавляет средства для обращения к методам компонентов EJB. Кли

 

ент EJB посылает запрос вызова метода компонента EJB контейне

 

ру компонентов EJB. Контейнер EJB вызывает соответствующий

 

метод компонента EJB. Контейнер обеспечивает безопасность, по

 

стоянную работоспособность объектов, управление ресурсами,

 

поддержку работы с транзакциями

Клиенты EJB

Посредством сервиса имен EJB клиенты осуществляют поиск ком

 

понентов EJB. После обнаружения компонента EJB клиент посыла

 

ет сообщение контейнеру компонентов EJB, контейнер определяет

 

доступные для клиента методы

Компоненты

Существует три типа серверных компонентов EJB: компоненты EJB-

EJB

сессий, компоненты EJB-сущности, компоненты EJB, основанные на

 

сообщениях. Компоненты EJB работают в окружении, предостав

 

ляемом контейнером серверных компонентов EJB

Сервис имен

Сервис имен и директориев предоставляет возможность обнаруже

 

ния зарегистрированных объектов. При помощи сервиса имен мож

 

но найти соответствие между именем, например, компонента EJB, и

 

домашним интерфейсом серверного компонента EJB

 

Рис. 5.35. Базовая архитектура EJB

Типы компонентов EJB

Компонент EJB-сессии — Session Bean

Компоненты EJB-ceccnn используются для выполнения бизнес-логики, которая не требует создания постоянных соединений. Часто такие компоненты EJB ассоциируются с тем или иным вполне конкретным клиентом. При остановке работы клиента, останавливается и работающий серверный компонент EJB-сессии. Компоненты EJB-сессии могут иметь доступ и модифицировать данные, однако для этого более приспособлены компоненты EJB- сущности.

Компонент EJB-сущности — Entity Bean

Как правило, компонент EJB-сущности используется для того, чтобы осуществлять доступ к базам данных. Компонент EJB-сущности может обслуживать несколько клиентов, при прекращении работы клиента, компонент EJB-сущности продолжает работать. Компонент EJB-сущности создает запросы к базе данных — это наиболее частое его назначение и представляет таблицу в базе данных. Свойства компонента EJB-сущности соответствуют различным столбцам этой таблицы. При создании экземпляра компонента EJB его можно представлять как временный образ строки таблицы, с которой ассоциируется компонент EJB.

Компонент EJB, основанный на сообщениях — Message-driven Bean

Этот тип серверных компонентов EJB появился в спецификации EJB 2.0. Компонент EJB этого типа используется для выполнения фрагмента кода при получении сообщения от клиента.

Пассивация и активация компонентов EJB

Контейнер компонентов EJB имеет возможность манипулировать занимаемой памятью путем пассивации и активации компонентов EJB, которые обслуживаются этим контейнером. При пассивации состояние компонента EJB записывается в постоянное хранилище данных, например, в базу данных или при необходимости в метку компонента EJB, что, однако, не есть пассивация как таковая, а просто дополнительный способ сохранения компонента EJB для последующего возобновленного его использования, затем компонент EJB удаляется из памяти. Активация противоположна пассивации: состояние компонента EJB считывается, и компонент EJB загружается в память. Активация и пассивация как таковые применяются к компонентам EJB-сущностей с поддержкой сессий. Именно состояние сессии записывается при пассивации, для этого существует специальный механизм. Перед пассивацией контейнер вызывает метод ejbPassivatet), а после активации — метод ejbActivate (), эти методы используются для того, чтобы произвести все необходимые настройки перед пассивацией или после активации.

Постоянные соединения

Компонент EJB-сесспй без поддержки состояний и компонент EJB- сущности являются постоянными, перманентными. Контейнер поддерживает их работу и постоянное существование. Для сохранения таких компонентов EJB используются метки компонентов EJB — объекты типа javax.ejb.Handle. Для их создания применяется метод компонента EJB getHandie (). Восстановление компонента EJB осуществляется с применением метода getEJBObject () объекта Handle.

Основные компоненты компонентов EJB

Серверные компоненты EJB состоят из четырех компонентов: домашнего интерфейса, удаленного интерфейса, класса компонента EJB и описателя размещения компонента EJB (рис. 5.36).

Домашний интерфейс определяет методы создания, нахождения и уничтожения экземпляра компонента EJB.

Удаленный интерфейс содержит методы, определяющие бизнес-логику компонента EJB. Методы удаленного интерфейса должны быть имплементиро- ваны в классе компонента EJB.

Класс компонента EJB содержит логику работы самого компонента EJB. В нем должны быть имплементированы методы удаленного интерфейса компонента EJB и методы, соответствующие методам домашнего интерфейса для нахождения, создания и удаления экземпляра компонента EJB.

Описатель размещения — это XML-файл, который всегда носит имя ejb-jar.xmi. Дескриптор размещения содержит описание компонента EJB, используемое контейнером серверных компонентов EJB. Каждый компонент EJB может использовать отдельный файл дескриптора размещения, но, как правило, EJB размещается в комплекте компонентов EJB, образующих приложение и упакованных в файл ear.

Принятые названия и имена

Если компонент EJB назван Primer, то удаленный интерфейс компонента EJB будет описан в файле Primer.java, домашний интерфейс в файле PrimerHome. java, класс компонента EJB описан В файле PrimerBean.java ИЛИ PrimerE jb. j ava. Имя дескриптора размещения всегда будет ejb-jar.xmi (табл. 5.4).

Таблица 5.4. Назначение элементов компонента EJB


Элемент компонента EJB

Описание

 

Домашний интерфейс

Методы создания экземпляра компонента EJB, нахо

 

ждения существующего компонента EJB, уничтожения

 

 

экземпляра компонента EJB

 

Таблица 5.4 (окончание)

Элемент компонента EJB

Описание

Удаленный интерфейс

Содержит описания методов бизнес-логики компо

 

нента EJB

Класс компонента EJB

Логика компонента EJB как такового, имплементация

 

методов удаленного интерфейса

Описатель размещения

Файл XML, содержащий информацию о размещении

 

компонента EJB и пр.

Размещение компонента EJB

Для размещения компонента EJB на сервере необходимо обладать удаленным интерфейсом, домашним интерфейсом, классом компонента EJB и дескриптором размещения. Интерфейсы и класс компонента EJB размещаются в отдельном каталоге, образуя самостоятельный пакет, а дескриптор размещения помещается в каталог META-INF. Пакет с интерфейсами и классом компонента EJB, а также дескриптор размещения META-INF/ ejb-jar.inf затем упаковываются в JAR-файл.

Источник: Будилов В. А. Интернет-программирование на Java. — СПб.: БХВ-Петербург, 2003. — 704 е.: ил.

По теме:

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