{
}
public void ejbRemove () throws javax.ejb.RemoveException
{
}
public void setEntityContext (javax.ejb.EntityContext ctx)
{
}
public void unsetEntityContext()
{
}
public abstract String getAccountid ();
public abstract void setAccountid (String newAccountid);
public abstract String getAccounttype ();
public abstract void setAccounttype (String newAccounttype);
public abstract float getBalance ();
public abstract void setBalance (float newBalance);
public abstract int getCustomerid ();
public abstract void setCustomerid (int newCustomerid);
public abstract float getLimit ();
public abstract void setLimit (float newLimit);
:
:
}
Рис. 13.12. Класс реализации компонента-сущности в J2EE 1.2
Жизненный цикл компонента-сущности
Жизненный цикл компонента-сущности в основном базируется на тех же принципах, которые мы рассмотрели в главе 12 для жизненного цикла сеансовых компонентов, но в деталях эти циклы различаются. Наиболее значимы два следующих отличия.
Во-первых, для каждого развернутого компонента-сущности контейнер EJB с самого начала создает группу экземпляров. Размер и поведение этой группы зависят от различных настроек сервера. На этот момент местный интерфейс компонента уже существует, поэтому возможно вызывать местные методы или методы поиска. Экземпляры остаются в этом состоянии, пока клиент или контейнер EJB не выполнит их создание или активизацию.
Во-вторых, некоторые изменения в состоянии компонента-сущности могут иметь результатом прямые операции с базой данных, а также создание и удаление экземпляров EJB. Это очень важно иметь в виду, чтобы в ходе создания приложения не прийти к неожиданным результатам.
Очень наглядно жизненный цикл может быть показан на диаграмме состояний UML. На рис. 13.13 изображен жизненный цикл компонента-сущности в случае персистентно-сти, управляемой компонентом (во всех версиях J2EE) или персистентности, управляемой контейнером (bJ2EE 1.2).
На рис. 13.14 изображен жизненный цикл компонента-сущности при использовании персистентности, управляемой контейнером, в J2EE 1.3. От предыдущего цикла он отличается только введением методов отбора.
Обычные сценарии компонента-сущности
Ниже приведен стандартный сценарий использования компонента-сущности.
1. Клиент вызывает метод javax.rmi.РогtableRemoteObject.narrow(. . .) и получает ссылку на местный интерфейс.
2. На этом этапе можно вызывать любые местные методы и методы поиска. Для доступа к уже существующим данным надо вызвать метод поиска, который даст ссылку на удаленный интерфейс нужного экземпляра EJB. Этот экземпляр создается сервером приложения автоматически, поэтому следующий этап можно пропустить.
3. Для добавления в базу новых данных клиент вызывает через местный интерфейс нужный метод createдля компонента-сущности. При этом также выполняются методы еjbCreate и еjbPostCreate. Возвращается ссылка на удаленный интерфейс компонента.
4. Клиент вызывает любое количество деловых методов с использованием ссылки на удаленный интерфейс.
5. Клиент вызывает метод removeместного либо удаленного интерфейса. Код, соответствующий этому сценарию, приведен на рис. 13.15.
:
InitialContext initCtx = new Initial Context();
Object objRef = initCtx.lookup("Java:comp/env/ejb/Profile");
ProfileHomeprofileHome=(ProfileHome)PortableRemoteObject.narrow(objRef, ProfileHome.class);
Profile profileRemote = profileHome.findByPrimaryKey(username);
:
Моделирование отношений компонентов-сущностей
Компоненты-сущности могут использовать при выполнении своей работы другие классы Java, например JavaBeans, и взаимодействовать с другими элементами J2EE, такими как компоненты JSP, сервлеты и сеансовые компоненты. В данном разделе рассматриваются особенности моделирования таких отношений.
Компоненты-сущности и другие классы Java
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.