Java Platform, Enterprise Edition (Java EE) 8
Учебник по Java EE

Назад Вперёд Содержание

Жизненные циклы Enterprise-бинов

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

Следующие описания относятся к методам, которые объясняются вместе с примерами кода в следующих двух главах. Если вы новичок в Enterprise-бинах, вам следует пропустить этот раздел и сначала выполнить примеры кода.

Здесь рассматриваются следующие темы:

Жизненный цикл сессионного бина с сохранением состояния

Рисунок 35-2 иллюстрирует этапы, через которые сессионный компонент с сохранением состояния проходит через свою жизнь. Клиент инициирует жизненный цикл, получая ссылку на сессионный компонент с состоянием. Контейнер выполняет инъецирование всех зависимостей, а затем вызывает метод, аннотированный @PostConstruct, если таковой имеется. Теперь компонент готов к вызову его бизнес-методов клиентом.

Рис. 35-2. Жизненный цикл сессионного компонента с сохранением состояния

Диаграмма, показывающая жизненный цикл сессионного компонента с состоянием.

На этапе готовности (Ready) контейнер EJB может решить деактивировать (Deactivate или Passivate) компонент путём перемещения его из памяти во вторичное хранилище. (Как правило, контейнер EJB берёт самый редко используемый компонент для деактивации.) Контейнер EJB вызывает аннотированный @PrePassivate метод, если таковой имеется, непосредственно перед его деактивацией. Если клиент вызывает бизнес-метод бина, который находится на этапе деактивации, EJB-контейнер активирует его, вызывает аннотированный @PostActivate метод , если таковой имеется, и затем переводит его на этап готовности.

В конце жизненного цикла клиент вызывает аннотированный @Remove метод, а контейнер EJB вызывает аннотированный @PreDestroy метод, если таковой имеется. Объект компонента готов к сборке мусора.

Ваш код управляет вызовом только одного метода жизненного цикла — аннотированного @Remove. Все остальные методы на рисунке 35-2 вызываются контейнером EJB. См. главу 56 «Адаптеры и контракты ресурсов» для получения дополнительной информации.

Жизненный цикл сессионного бина без сохранения состояния

Поскольку сессионный компонент без сохранения состояния никогда не деактивируется, его жизненный цикл состоит только из двух этапов: несуществующего и готового к вызову бизнес-методов. Рисунок 35-3 иллюстрирует этапы сессионного компонента без сохранения состояния.

Рис. 35-3. Жизненный цикл сессионного компонента без состояния или синглтона

Диаграмма, показывающая жизненный цикл сессионного компонента без состояния или синглтона.

Контейнер EJB обычно создаёт и поддерживает пул сессионных компонентов без сохранения состояния. Контейнер выполняет инъецирование всех зависимостей, а затем вызывает аннотированный @PostConstruct метод, если он существует. Теперь компонент готов к тому, чтобы его бизнес-методы вызывались клиентом.

В конце жизненного цикла контейнер EJB вызывает аннотированный @PreDestroy метод, если он существует. Объект компонента готов к сборке мусора.

Жизненный цикл сессионного бина-синглтона

Как и сессионный компонент без сохранения состояния, сессионный компонент-синглтон никогда не деактивируется и имеет только два этапа: не существует и готов к вызову бизнес-методов, как показано на рис. 35-3.

Контейнер EJB инициирует жизненный цикл сессионного компонента-синглтона, инстанцируя объект его класса. Если синглтон помечен аннотацией @Startup, это происходит при развёртывании приложения. Контейнер выполняет инъецирование всех зависимостей и затем вызывает метод, аннотированный @PostConstruct, если он существует. Теперь сессионный компонент-синглтон готов к тому, чтобы его бизнес-методы вызывались клиентом.

В конце жизненного цикла контейнер EJB вызывает аннотированный @PreDestroy метод, если он существует. Сессионный компонент-синглтон теперь готов для сборки мусора.

Жизненный цикл бина, управляемого сообщениями

Рисунок 35-4 иллюстрирует этапы жизненного цикла бина, управляемого сообщениями.

Рис. 35-4. Жизненный цикл бина, управляемого сообщениями

Диаграмма, показывающая жизненный цикл бина, управляемого сообщениями.

Контейнер EJB обычно создаёт пул объектов, управляемых сообщениями. Для каждого объекта контейнер EJB выполняет следующие задачи.

  1. Если управляемый сообщениями компонент использует инъецирование зависимостей, контейнер инъецирует зависимости до инстанцирования объекта.

  2. Контейнер вызывает аннотированный @PostConstruct метод, если таковой имеется.

Как и сессионный компонент без сохранения состояния, управляемый сообщениями компонент никогда не деактивируется и имеет только два состояния: не существует и готов к приёму сообщений.

В конце жизненного цикла контейнер вызывает аннотированный @PreDestroy метод, если таковой имеется. Объект компонента готов к сборке мусора.


Назад Вперёд Содержание
Логотип Oracle  Copyright © 2017, Oracle и/или её дочерних компаний. Все права защищены. Версия перевода 1.0.5 (Java EE Tutorial — русскоязычная версия)