Главная » Java, JavaBeans » Этапы цикла жизни Entity-Компонента

0

Рис. 7.1 Цикл жизни экземпляра Entity-Компонента

Контейнер создает экземпляр путем его конструирования. Затем он вызывает метод setEntityContext () для передачи экземпляру ссылки на этот контекст, то есть ссылки на интерфейс EntityContext. Этот интерфейс обеспечивает возможность доступа к сервисам Контейнера и позволяет экземплярам Компонента получить информацию об их клиентах.

Сейчас экземпляр Entity-Компонента находится в состоянии "Pooled". Для каждого типа Компонента создается свой собственный пул. Ни один из экземпляров, находящихся в пуле, не сопоставлен с конкретными данными. Другими словами, они не имеют identity – ни одно из их полей не имеет установленных значений – и, следовательно, все они эквивалентны. Контейнер может выбрать любой экземпляр для обслуживания клиента, который решил использовать такой Компонент. Реализация Контейнера определяет, когда именно создавать экземпляры Компонентов и как много таких экземпляров следует поместить в пул.

Когда клиентское приложение вызывает один из методов поиска, Контейнер выполняет код соответствующего метода еjbFind () для произвольного экземпляра Компонента с состоянием pooled. В процессе выполнения метода поиска экземпляр не переходит в состояние ready.

Когда Контейнер выбрал экземпляр для обслуживания запроса клиента, этот экземпляр переходит из состояния pooled в состояние ready. Существуют два способа перевода экземпляра Компонента из первого состояния во второе:

•   с помощью вызовов методов ejbCreate() или ejbPostCreate ().

•   с помощью вызова метода ejbActivate ().

Контейнер может выбрать экземпляр для обслуживания вызова клиентом метода create () home-интерфейса. В ответ на этот вызов, Контейнер создает объект и вызывает методы ejbCreate() и ejbPostCreate (). Контейнер вызывает метод ejbActivate () для активизации экземпляра, чтобы он мог обслуживать вызовы конкретных клиентов. Обычно Контейнер использует метод ejbActivate (), когда нет подходящих экземпляров в состоянии ready для обслуживания клиентских запросов.

Когда экземпляр находится в состоянии ready, он сопоставлен с конкретным Entity-объектом (например, с определенной записью в базе данных). Клиент может вызвать бизнес-методы этого Entity- Компонента. Контейнер использует методы ejbLoad() и ejbStore() для того, чтобы заставить Компонент считывать или записывать свои данные. Все эти методы – бизнес-методы, ejbLoad() и ejbStore() могут быть вызваны много раз, а могут и ни одного, в соответствии с логикой клиентского приложения. Методы ejbLoad() и ejbStore() позволяют экземпляру Компонента выполнять синхронизацию его состояния с информацией в базе данных.

Когда экземпляр Entity-Компонента переходит в состояние pooled, он отсоединяется от конкретных данных (от собственно Entity- Компонента). Теперь Контейнер может сопоставить этот экземпляр с любым Entity-объектом. Существуют два способа, с помощью которых Контейнер переводит экземпляр Компонента из состояния ready в состояние pooled.

Источник: Руководство программиста Enterprise JavaBeans

По теме:

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