Главная » Java, Web » Взаимодействие серверных компонентов EJB друг с другом

0

В примерах, которые мы рассмотрели ранее, обращение к серверному компоненту EJB осуществлялось из независимого клиента. Серверный компонент EJB располагается на сервере, а клиент может находиться где угодно. Месторасположение компонента EJB (адреса и порта сервера компонентов EJB) указывается в клиентской программе. Существует возможность использования в качестве клиентов для серверных компонентов EJB таких модулей, как серверные страницы Java. Может возникнуть ситуация, когда серверный компонент EJB потребуется вызвать из другого серверного компонента EJB. Технология EJB специально предусматривает такую возможность.

Предположим, что компонент EJB-client является клиентом по отношению к компоненту EJB-1, тогда описатель размещения компонента EJB для клиентского компонента EJB должен содержать в себе ссылку на компонент EJB-1. Ссылка на компонент EJB-сущности описывается в элементе <ejb- ref>. Если обратить внимание на дерево вложенных друг в друга элементов в XML-файле, то можно заметить, что элемент <ejb-ref> находится на том же самом уровне вложения элементов (для компонента EJB-сущности), что И элементы <reentrant>, <cmp-field>, <primkey-field>, <env-entry>, и элемент <ejb-ref> расположен после них, но перед элементами <security-roie-ref> и <resource-ref>. Не все перечисленные сейчас элементы будут с необходимостью использованы в файле описателя, но в случае, если эти элементы присутствуют, последовательность их появления должна быть такой, как указано выше. Перечислим элементы, используемые в компоненте EJB-сущности, внутри элемента <ejb-ref>, сведя информацию в таблицу (табл. 5.1).

Таблица 5.1. Дочерние элементы для элемент <ejb-ref> в описателе компонента EJB- сущности

Элемент

Описание

<description>

Описание компонента EJB, необязательный элемент

<еjb-ref-name>

Имя, используемое в ссылке на компонент EJB, должно начи

 

наться с ejb/, например

 

<еjb-ref-name>ejb/stocks</ejb-ref-name>

<еjb-ref-type>

Тип компонента EJB: Session или Entity

<home>

Полное имя домашнего интерфейса компонента EJB, на кото

 

рый есть ссылка

<remote>

Полное имя удаленного интерфейса компонента EJB

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

Элемент

Описание

<еjb-link>

Это необязательный элемент, его содержимое зависит от кон

 

тейнера серверных компонентов EJB. Элемент используется для

 

задания имени компонента EJB, на который есть ссылка, причем

 

имя указывается таким, какое имя соответствует этому компо

 

ненту EJB в контейнере

Пример того, как может выглядеть элемент <ejb-ref>: <ejb-ref>

<description>Poluchenie ssylki na dannye tsin aktsij</description>

<ej b-ref-name>ej b/BobSess i i</ej b-ref-name>

<ejb-ref-type>Session</ejb-ref-type>

<home>kotirovki.BobSessiiHome</home>

<remote>kotirovki.BobSessiic/remote>

<ejb-link>BobSessii</ejb-link>

</ejb-ref>

Если в файл размещения клиентского компонента EJB вставлена ссылка на компонент EJB, к которому будет производиться обращение из этого компонента EJB, то есть в компонент EJ В-Client вставлена ссылка на компонент EJB BobSessii (который выполняет роль компонента EJB-1), то обращение к компоненту EJB BobSessii из клиентского компонента EJB можно осуществить при помощи следующего кода: Context ctx = new InitialContext(); BobSessiiHome home = (BobSessiiHome)

ctx.lookup("j ava:camp/env/ejb/kot i rovki");

В результате получим объект EJB, который затем можно использовать для поиска компонентов EJB, создания компонентов EJB и т. п. Приставка j ava: сотр/env используется всегда, когда необходимо произвести поиск с использованием JNDI в пределах доступного окружения.

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

По теме:

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