Читаем Изучаем Java EE 7 полностью

4. Компонент выполняет запрошенный вызов и остается в памяти, ожидая последующих запросов от клиентов.

5. Если клиент ничего не запрашивает в течение некоторого периода времени, то контейнер вызывает метод, аннотированный @PrePassivate, если таковой имеется, и пассивизирует экземпляр компонента в постоянное хранилище.

6. Если клиент вызывает пассивизированный компонент, контейнер помещает его обратно в память и вызывает метод с аннотацией @PostActivate, если таковой имеется.

7. Если клиент не вызывает пассивизированный экземпляр компонента в течение определенного периода времени, то контейнер разрушает его.

8. В качестве замены шагу 7, если клиент вызывает метод, аннотированный @Remove, контейнер вызывает метод с аннотацией @PreDestroy, если таковой имеется, и заканчивает жизненный цикл экземпляра компонента.

Рис. 8.2. Жизненный цикл компонента, сохраняющего состояние

В некоторых случаях компонент, сохраняющий состояние, содержит открытые ресурсы, такие как сетевые сокеты или соединения с базой данных. Поскольку контейнер не может держать эти ресурсы открытыми для каждого компонента, вам придется закрывать и снова открывать ресурсы до и после пассивизации, используя методы обратного вызова. Другая возможность состоит в отключении поведения активизации/пассивизации по умолчанию или компонента, сохраняющего состояние. Вы должны очень осторожно использовать эту особенность, но вы нуждаетесь именно в ней. Можете аннотировать ваши компоненты, сохраняющие состояние, с помощью атрибута @Stateful(passivationCapable = False).

<p>Методы обратного вызова</p>

Как вы только что видели, каждый тип сессионных компонентов имеет свой собственный управляемый контейнером жизненный цикл. Контейнер позволяет вам предоставить бизнес-логику, которая будет использована при смене состояния компонента. Переход из одного состояния в другое может быть перехвачен контейнером для вызова методов, аннотированных одним из способов, показанных в табл. 8.1.

Таблица 8.1. Аннотации методов обратного вызова, предназначенных для работы с жизненным циклом
АннотацияОписание
@PostConstructМетод должен быть вызван сразу после создания экземпляра компонента и выполнения контейнером внедрения зависимостей. В подобных методах часто выполняется инициализация
@PreDestroyМетод должен быть вызван сразу после того, как контейнер уничтожит экземпляр компонента. Этот метод часто используется для
освобождения ранее инициализированных ресурсов. У компонентов, сохраняющих состояние, это происходит, когда истекает время ожидания или когда отработает метод, аннотированный @Remove
@PrePassivateЭтот метод предназначен только для компонентов, сохраняющих состояние. Он должен быть вызван перед тем, как контейнер пассивизирует экземпляр. Обычно это дает компоненту время, чтобы подготовиться к сериализации и освободить ресурсы, которые не могут быть сериализованы (например, закрываются соединения с базой данных, менеджеры сообщений, сетевые сокеты и др.)
@PostActivateЭтот метод предназначен только для компонентов, сохраняющих состояние. Он должен быть вызван
Перейти на страницу:

Похожие книги

1С: Бухгалтерия 8 с нуля
1С: Бухгалтерия 8 с нуля

Книга содержит полное описание приемов и методов работы с программой 1С:Бухгалтерия 8. Рассматривается автоматизация всех основных участков бухгалтерии: учет наличных и безналичных денежных средств, основных средств и НМА, прихода и расхода товарно-материальных ценностей, зарплаты, производства. Описано, как вводить исходные данные, заполнять справочники и каталоги, работать с первичными документами, проводить их по учету, формировать разнообразные отчеты, выводить данные на печать, настраивать программу и использовать ее сервисные функции. Каждый урок содержит подробное описание рассматриваемой темы с детальным разбором и иллюстрированием всех этапов.Для широкого круга пользователей.

Алексей Анатольевич Гладкий

Программирование, программы, базы данных / Программное обеспечение / Бухучет и аудит / Финансы и бизнес / Книги по IT / Словари и Энциклопедии
1С: Управление торговлей 8.2
1С: Управление торговлей 8.2

Современные торговые предприятия предлагают своим клиентам широчайший ассортимент товаров, который исчисляется тысячами и десятками тысяч наименований. Причем многие позиции могут реализовываться на разных условиях: предоплата, отсрочка платежи, скидка, наценка, объем партии, и т.д. Клиенты зачастую делятся на категории – VIP-клиент, обычный клиент, постоянный клиент, мелкооптовый клиент, и т.д. Товарные позиции могут комплектоваться и разукомплектовываться, многие товары подлежат обязательной сертификации и гигиеническим исследованиям, некондиционные позиции необходимо списывать, на складах периодически должна проводиться инвентаризация, каждая компания должна иметь свою маркетинговую политику и т.д., вообщем – современное торговое предприятие представляет живой организм, находящийся в постоянном движении.Очевидно, что вся эта кипучая деятельность требует автоматизации. Для решения этой задачи существуют специальные программные средства, и в этой книге мы познакомим вам с самым популярным продуктом, предназначенным для автоматизации деятельности торгового предприятия – «1С Управление торговлей», которое реализовано на новейшей технологической платформе версии 1С 8.2.

Алексей Анатольевич Гладкий

Финансы / Программирование, программы, базы данных