Главная » Java, Web » Компоненты EJB-сессий Компоненты EJB с поддержкой состояния

0

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

Таблица 5.5. Различия компонентов EJB с поддержкой состояния и

без поддержки состояния

Компонент EJB-сессии без под

Компонент EJB-сессии с поддержкой

держки состояния

состояния

В дескрипторе размещения:

В дескрипторе размещения:

Stateless Session Bean

Stateful Session Bean

Много клиентов одновременно

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

Имплементация компонента EJB-сессий

Компонент EJB-сессии требует наличия домашнего интерфейса, удаленного интерфейса, класса компонента EJB и XML-дескриптора размещения. Все четыре компонента строятся по определенным правилам. Домашний интерфейс является наследником интерфейса javax.ejb.EjBHome, удаленный интерфейс расширяет интерфейс javax.ejb.EJBObject. Класс компонента EJB имплементирует интерфейс javax.ejb.SessionBean (листинг 5.26).

Листинг 5.26. Имплементация интерфейса javax.ejb.EJBObject

public interface SessionBean extends EnterpriseBean { public abstract void ejbActivate() throws java.rmi.RemoteException; public abstract void ejbPasivate() throws java.rmi.RemoteException; public abstract void ejbRemoveO throws java.rmi.RemoteException; public abstract void setSessionContext(SessionContext ctx) throws

j ava. rmi. RemoteException; }

В табл. 5.6.-5.8 приведены детали, необходимые при работе с удаленным интерфейсом, домашним интерфейсом, классом компонента EJB для компонента EJB-сессии с поддержкой состояний и для компонента EJB-сессии без поддержки состояний.

Таблица 5.6. Домашний интерфейс

Home interface extends javax.ejb.EJBHome

Метод

Возвращаемое значение

Описание

Create() throws

java.rmi.RemoteException,

j avax.ejb.CreateException

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

При получении контейнером запроса от клиента, контейнер создает экземпляр компонента EJB-сессии. Метод create () может содержать параметры. Метод соответствует имплемен- тации метода ejbCreateO в классе компонента EJB. Должен существовать, по крайней мере, один метод create ()

 

Таблица 5.7. Удаленный интерфейс

Remote interface extends javax.

,ejb.EJBObject

 

Метод

Возвращаемое

Описание

 

значение

 

ExampleMethod (int

Int

Все определяемые ме

GNPofFrancelnBillionsOfPounds);

 

тоды удаленного интер

 

 

фейса зависят от кон

 

 

кретных методов данно

 

 

го компонента EJB

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

Remote interface extends javax.

,ejb.EJBObject

 

Метод

Возвращаемое значение

Описание

ExampleMethod (int

GNPofFrancelnBi11ionsOfPounds);

Int

Каждый объявленный в интерфейсе метод должен быть имплементи- рован в компоненте EJB. В таблице приводится только пример, метод PrimerMetod()

 

Таблица 5.8. Класс компонента EJB

Bean class implements javax.

.ejb.SessionBean

 

Метод

Возвращаемое значение

Описание

EjbCreate() throws j avax.ejb.CreateException

Void

Соответствует методу create домашнего интерфейса. Контейнер вызывает метод ejbCreate после того, как клиент вызовет метод create. Обязателен

EjbRemove()

Void

Этот метод вызывается контейнером для предупреждения экземпляра компонента EJB о том, что его собираются уничтожить. Экземпляр компонента EJB при этом производит зачистку и уничтожается. Обязателен

EjbActivate()

Void

Контейнер вызывает этот метод для сообщения экземпляру компонента EJB о его активации. При этом экземпляр компонента EJB становится "активным", восстанавливает свое состояние (сетевые связи, метки) и становится годным к использованию. Обязателен

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

Bean class implements javax.

.ejb.SessionBean

 

Метод

Возвращаемое значение

Описание

EjbPassivate()

Void

Контейнер вызывает этот метод для сообщения экземпляру компонента EJB о пассивации, при этом компонент EJB освобождает ресурсы, например, сетевые связи, метки. Обязателен

SetSessionContext()

Void

Контейнер вызывает этот метод после того, как компонент EJB был создан, но перед тем, как будут вызваны методы ejbCreate. Компонент EJB отвечает за сохранность объекта типа j avax. ejb.SessionContext. Обязателен

PrimerMethod(int Chtolinbo)

Int

Метод — пример прочих методов, используемых в классе компонента EJB, если такие методы описаны в удаленном интерфейсе. Необязателен

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

По теме:

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