Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
сит.docx
Скачиваний:
10
Добавлен:
26.09.2019
Размер:
353.03 Кб
Скачать
  1. Общие принципы развертывание сеансовых компонентов ejb. Пример текста дескриптора поставки.

Вообще, под процессом развертывания приложения понимается совокупность всех действий по настройке системы в конкретной операционной среде, после которых клиент может приступить к работе с ней.

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

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

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

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

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

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

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

<transaction-type> - показ., исп-тся ли для К-та CMT или BMT.

<trans-attribute> - задает знач-е атр-в транз-и для кажд. м-да. <timeout> - значение тайм-аута для session-Компонента.

<?xml version="1.0" encoding="Cp1252"?>

<ejb-jar>

<description>Example</description>

<display-name></display-name>

<small-icon></small-icon>

<large-icon></large-icon>

<enterprise-beans>

<session>

<ejb-name>Sample</ejb-name>

<home> SampleHome</home>

<remote> Sample </remote>

<ejb-class> SampleBean</ejb-class>

<session-type>Stateless</session-type>

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

</session>

</enterprise-beans>

<ejb-client-jar></ejb-client-jar>

</ejb-jar>

  1. Сущностные (Entity) компоненты, жизненный цикл, pool соединений. Общие принципы реализации. Особенности, методы Entity компонент их назначение и использование.

Entity комп-ты явл-ся объектным предст-ем записи в реляц. БД. Обычно 1 такой компонент сопост. с 1 записью в БД. Поск-ку данные одной записи д. б. доступны для неск-ких клиентов сразу, Entity Bean д. б. доступен для неск-ких клиентов и, след-но, не может иметь состояния, относящегося к конкретному клиенту. Каждому Entity-бину соответствует свой первичный ключ, по которому он может быть однозначно определен клиентом. Также Entity-бин имеет всегда какое-либо состояние (набор величин атрибутов, определяющих данный Entity-бин), к-е м. б. зафиксировано и сохранено, а затем и восстановлено.

Жизненный цикл. После того, как контейнер EJB создает экземпляр, он вызывает метод setEntityContext класса бина сущности. Метод setEntityContext передает контекст сущности бину.). После инсталляции бин сущности помещается в пул доступных экземпляров ("обобщенном" (pooled). Находясь в стадии пула, экземпляр никак ассоциируется с какой-либо конкретной "личностью" объекта EJB. Все экземпляры в пуле идентичны. Контейнер EJB назначает "личность" экземпляру, когда перемещает его в оперативную память. Существуют два пути из состояния пула к состоянию готовности. По первому пути клиент вызывает метод create, что заставляет контейнер EJB вызвать ejbCreate и ejbPostCreate. По второму пути контейнер EJB вызывает метод ejbActivate. Когда бин сущности находится в состоянии готовности, могут вызываться его бизнес-методы. Есть также два пути из состояния готовности в состояние пула. Во-первых, клиент может вызвать метод remove, что заставляет контейнер EJB вызвать метод ejbRemove. Во-вторых, контейнер EJB может вызвать метод ejbPassivate. В конце жизненного цикла контейнер EJB удаляет объекты из пула и вызывает метод unsetEntityContext.

Реализация бина.Здесь рассм. Entity-бина BookEJB. Он реализует набор пар get/set, к-е уст-ют/получают значения его полей. Также реализованы методы управления персистентностью:

а) ejbCreate(BookPK BookPK, :) Созд. Экз-ра бина в базе.

б) ejbRemove() Удал-е экз-ра бина в базе по первич. ключу.

в) Методы ejbLoad() и ejbStore().Им соответствуют методы selectRow и updateRow соотв-но в классе BookDAO. При указании типа транзакции required над бизнес-методом бина, перед заданием переменной и после её получения контейнер авт-ки выз-ет эти методы для чтения и соотв-но сохр-я сост-я бина из базы. Эти методы выз-тся именно в этой посл-сти.

г) BookPK BookPK ejbFindByPrimaryKey(BookPK BookPK) Нахождение экземпляра бина в базе.

д) getDBConnection Получ. соед-е к СУБД из пула соед-й EJB-конт-ра.

Базовым классом для класса entity-компонента является класс javax.ejb.EntityBean.

Кроме вышеперечисленный, интерфейс EntityBean содержит следующие методы:

setEntityContext() – устанавливает контекст компонента. Контейнер использует этот метод для передачи ссылки на интерфейс EntityContext экземпляру компонента. Этот интерфейс содержит методы, которые позволяют получить доступ к свойствам среды исполнения компонента;

unsetEntityContext() – вызывается контейнером перед тем, как происходит уничтожение текущего экземпляра entity-компонента;

ejbActivate() – уведомляет компонент о том, что он только что был активизирован;

ejbPassivate() – уведомляет компонент о том, что готовится его деактивация, то есть экземпляр будет отсоединен от конкретного entity-объекта (от конкретных данных в базе данных) и возвращен в пул доступных экземпляров;

Итого: каждый entity-бин должен обладать следующими характеристиками:

К еntity-бинам может обращаться одновременно большое количество пользователей.

Entity-бины могут участвовать в транзакциях.

Entity-бины представляют данные в структуре домена.

Entity-бины перманентны. Они существуют до тех пор, пока существуют данные в структуре домена.

Entity-бины не подвергаются влиянию системных сбоев. Клиент не теряет данные в результате сбоя или отключения сервера EJB. Entity-бины имеют постоянные объектные ссылки, которые содержат неизменяемый ключ данного бина.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]