Контейнер EJB, понятие, назначение, основные функции.

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

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

· управление циклом жизни компонента – его созданием, инициализацией, сохранением его состояния в базе данных, если это необходимо;

· возможность поиска клиентом нужных ему объектов;

· гарантию того, что вызов методов происходит в контексте нужной транзакции;

· базовый уровень обеспечения безопасности;

· наличие инструментов разработчика, например, компилятора для генерации стабов.

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

Дескриптор поставки, структура и общие принципы организации кода. Пример описания на XML.

Дескриптор развертывания (иногда используются термины «установки» или «поставки» - в настоящий момент еще нет устоявшегося термина на русском языке)- необходим для настройки созданного компонента на работу в конкретной операционной среде. Необходимость в нем возникает из-за того, что спецификация EJB четко определяет несколько этапов, который проходит компонент от своего создания до доставки конечному пользователю с окончательной настройкой. Об этих этапах уже говорилось ранее. Наличие подобного «конвейера» требует передачи информации от одного этапа к другому. С каждым компонентом сопоставлен свой дескриптор.

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

· Имена Домашнего и Удаленного интерфейса, которые требуются для вашего EJB

· Имя для публикации в JNDI для вашего Домашнего интерфейса EJB

· Транзакционные атрибуты для каждого метода вашего EJB

· Контрольный Список Доступа для авторизации

Спецификация EJB 1.1 требует, чтобы Дескриптор Развертывания имел XML-формат. Поскольку XML является метаязыком, то для описания каждого конкретного класса документов нужно создать свой язык - в частности, определить набор используемых тегов и правила взаимоотношений между ними. Такой язык называется DocumentTypeDefinition (DTD).

Дескриптор Развертывания соответствует DTD, разработанному фирмой SunMicrosystems. Он содержит набор свойств, который описывает, как Контейнер будет выполнять процесс развертывания Компонента или приложения, и включает набор тегов и атрибутов, чьи значения определяют состояние свойств Компонента. В качестве примера приведем несколько тегов:

<session> - говорит о том, что Компонент является session-Компонентом (тег <entity> используется для обозначения Entity-Компонентов).

Внутри области тега <session> могут использоваться другие теги:

<ejb-class> - имя класса реализации.

<home> - имя home-интерфейса.

<remote> - имя remote-интерфейса.

<session-type> - показывает, является ли session-Компонент stateful- или stateless-Компонентом.

<transaction-type> - показывает, используется ли для Компонента CMT или BMT.

<trans-attribute> - задает значение атрибутов транзакции для каждого метода.

<timeout> - значение тайм-аута для session-Компонента.

В качестве примера приведем фрагмент Дескриптора Развертывания для компонента Cart, поставляемого в качестве примера с InpriseApplicationServer 4.0:

<ejb jar>

<enterprise beans>

<session>

<description>

XML deployment descriptor created from file:

D:\Kodiak\kodiak04\ejb_ea_0_4\examples\cart\cart.ser

</description>

<ejb-name>cart</ejb-name>

<home>CartHome</home>

<remote>Cart</remote>

<ejb-class>CartBean</ejb-class>

<session-type>Stateful</session-type>

<transaction-type>Container</transaction-type>

</session>

</enterprise-beans>

<assembly-descriptor>

<container-transaction>

<method>

<ejb-name>cart</ejb-name>

<method-name>*</method-name>

</method>

<trans-attribute>NotSupported</trans-attribute>

</container-transaction>

<container-transaction>

<method>

<ejb-name>cart</ejb-name>

<method-name>purchase</method-name>

</method>

<trans-attribute>Required</trans-attribute>

</container-transaction>

</assembly-descriptor>

</ejb-jar>

Наши рекомендации