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

0

Когда компонент EJB размещается с помощью контейнера EJB, то контейнер запрашивает имя компонента EJB и регистрирует домашний интерфейс.

При запросе клиентом имени домашнего интерфейса, компонент EJB получает стаб домашнего интерфейса. Стаб — это часть технологии вызова удаленных процедур (RMI, Remote Method Invocation). Клиент использует ста- бы для удаленного обращения к доступным методам объекта, который располагается в месте, удаленном от клиента. Стаб получает значение, возвращаемое методом от удаленного объекта и передает его клиенту (если значение возвращается).

Рис. 5.37. Взаимодействие клиента с компонентом EJB

Стаб домашнего интерфейса не осуществляет никаких взаимодействий с домашним интерфейсом. Стаб взаимодействует с имплементацией домашнего интерфейса, которая находится в контейнере. Клиент использует стаб для вызова методов создания, нахождения и удаления экземпляра компонента EJB. Когда вызов метода создания компонента EJB (или нахождения компонента EJB) выполняется удачно, тогда контейнер создает экземпляр серверного компонента EJB (экземпляр класса серверного компонента EJB). Имплементация домашнего интерфейса при этом возвращает стаб удаленного интерфейса, который соответствует имплементации удаленного интерфейса. Клиент может использовать удаленный стаб для отправки запросов к серверному компоненту EJB (рис. 5.37).

Взаимодействие с компонентами EJB

Клиент должен произвести следующие действия.

?      Задание службы имен

System.setProperty("java.naming.factory.initial", "org,jnp,interfaces.NamingContextFactory");

System.setProperty("j ava.naming.provider.url", "localhost:1099");

?       Получение контекста службы имен (в блоке try/catch) InitialContext jndiContext = new InitialContext();

?       Получение ссылки на домашний стаб (в блоке try/catch) Object reference = jndiContext.lookup("EJBName");

?       Получение домашнего стаба (в блоке try/catch)

com.masslight.ExamplesJB.Home home = (com.masslight.ExampleEJB.Home)

PortableRemoteObject.narrow (reference, com. masslight.ExampleEJB.Home.class);

?       Получение удаленного стаба (в блоке try/catch)

com.masslight.ExampleEJB.Remote remote = home.create() ;

?       Вызов бизнес-метода в экземпляре компонента EJB (в блоке try/catch) remote.businessMethodOne(…);

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

По теме:

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