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

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

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

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

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

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


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


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

Методы обратного вызова

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


Таблица 8.1. Аннотации методов обратного вызова, предназначенных для работы с жизненным циклом

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


Перейти на страницу:

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

C# 4.0: полное руководство
C# 4.0: полное руководство

В этом полном руководстве по C# 4.0 - языку программирования, разработанному специально для среды .NET, - детально рассмотрены все основные средства языка: типы данных, операторы, управляющие операторы, классы, интерфейсы, методы, делегаты, индексаторы, события, указатели, обобщения, коллекции, основные библиотеки классов, средства многопоточного программирования и директивы препроцессора. Подробно описаны новые возможности C#, в том числе PLINQ, библиотека TPL, динамический тип данных, а также именованные и необязательные аргументы. Это справочное пособие снабжено массой полезных советов авторитетного автора и сотнями примеров программ с комментариями, благодаря которым они становятся понятными любому читателю независимо от уровня его подготовки. Книга рассчитана на широкий круг читателей, интересующихся программированием на C#.Введите сюда краткую аннотацию

Герберт Шилдт

Программирование, программы, базы данных
97 этюдов для архитекторов программных систем
97 этюдов для архитекторов программных систем

Успешная карьера архитектора программного обеспечения требует хорошего владения как технической, так и деловой сторонами вопросов, связанных с проектированием архитектуры. В этой необычной книге ведущие архитекторы ПО со всего света обсуждают важные принципы разработки, выходящие далеко за пределы чисто технических вопросов.?Архитектор ПО выполняет роль посредника между командой разработчиков и бизнес-руководством компании, поэтому чтобы добиться успеха в этой профессии, необходимо не только овладеть различными технологиями, но и обеспечить работу над проектом в соответствии с бизнес-целями. В книге более 50 архитекторов рассказывают о том, что считают самым важным в своей работе, дают советы, как организовать общение с другими участниками проекта, как снизить сложность архитектуры, как оказывать поддержку разработчикам. Они щедро делятся множеством полезных идей и приемов, которые вынесли из своего многолетнего опыта. Авторы надеются, что книга станет источником вдохновения и руководством к действию для многих профессиональных программистов.

Билл де Ора , Майкл Хайгард , Нил Форд

Программирование, программы, базы данных / Базы данных / Программирование / Книги по IT