· ejbPostCreate<METOД>. Для каждого используемого метода ejbCreate в классе компонента должен быть соответствующий метод ejbPostCreate. Контейнер EJB вызывает этот метод после обычного метода create для того, чтобы передать в компонент какие-либо параметры, которые до выполнения метода create передать невозможно. Обычно это бывает, когда для компонента-сущности требуется дополнительные действия по инициализации, возможно, с привлечением удаленного интерфейса созданного экземпляра. Часто этот метод не содержит кода.
· еjbRemove. Этот метод не имеет параметров и вызывается при вызове одного из методов интерфейса remove или когда контейнер EJB начинает операцию собственного удаления. Для компонентов-сущностей этот метод эквивалентен вызову еjbPassivate.
· ejbHome<METOД>. Для каждого местного метода, вызываемого в местном интерфейсе, в классе компонента должен присутствовать метод с таким же именем, но с префиксом ejbHome, а не home. Параметры методов также должны совпадать. В версии J2EE 1.2 этот тип методов не существует.
· еjbPassivate и еjbActivate. Эти методы вызываются при пассивации или активизации экземпляра. Часто эти методы остаются пустыми, если не требуется какая-то специальная процедура инициализации или очистки перед пассивацией или активизацией EJB.
· еjbLoad и еjbStore. Эти методы вызываются контейнером EJB в различные моменты для обеспечения синхронизации персистентных полей в компоненте-сущности и данных в базе данных. В случае персистентности, управляемой контейнером, эти методы позволяют вмешиваться в процесс синхронизации для выполнения каких-нибудь специальных действий. В случае персистентности, управляемой компонентом, эти методы непосредственно содержат код синхронизации с базой данных. Оба метода могут оказывать значительное влияние на производительность.
· Деловые методы. Всем деловым методам, определенным в удаленном интерфейсе, должны соответствовать в классе компонента методы с такими же именами и параметрами. Они содержат код реализации деловых методов.
Кроме перечисленных выше, при персистентности, управляемой контейнером, в версии J2EE 1.3 класс реализации должен содержать дополнительные методы. Методы ejbSelect<METOД>, называемые методами отбора, содержатся только в классе реализации и не появляются в обоих интерфейсах. Они обычно вызываются из других деловых методов компонента-сущности и всегда объявляются как абстрактные. Их код реализации генерируется на этапе развертывания при выполнении соответствующих команд EJB QL.
Класс реализации может содержать дополнительные методы, которые играют вспомогательную роль в поддержке других методов компонента. Кроме того, в структуре компонента-сущности могут быть другие классы, используемые классом реализации.
Персистентные поля
Кроме методов, в классе реализации содержатся поле EntityContextи все персистентные поля данных. Обычно вместе с персистентными полями в класс помещаются методы доступа к ним getи set. Тип персистентности для поля указывается в описателе развертывания.
При персистентности, управляемой контейнером, в версии J2EE 1.3 разработчик не создает персистентные поля непосредственно, а, как было сказано в этой главе ранее, создает для них абстрактные методы доступа и объявляет эти поля в области СМР в описателе развертывания. Вся остальная работа выполняется позже диспетчером персистентности. Подобным же образом задаются поля CMR для отношений, управляемых контейнером.
На рис. 13.12 показан пример класса реализации компонента-сущности.
import java.rmi.RemoteException;
import javax.ejb.*;
:
:
public abstract class AccountEJB implements javax.ejb.EntityBean
{
public javax.ejb.EntityContext EJB_Context;
public AccountEJB ()
{
}
public AccountPK ejbCreate () throws javax.ejb.CreateException
{
return null;
}
public void ejbPostCreate () throws javax.ejb.CreateException
{
}
public void ejbActivate ()
{
}
public void ejbPassivate ()
{
}
public void ejbLoad ()
{
}
public void ejbStore ()
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.