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

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

Что такое сессионный бин?

Сессионный компонент инкапсулирует бизнес-логику, которая может вызываться программно локальным, удалённым клиентом или клиентом веб-сервиса. Чтобы получить доступ к приложению, развёрнутому на сервере, клиент вызывает методы сессионного компонента. Сессионный компонент выполняет работу для своего клиента, скрывая сложность выполняемых задач на стороне сервера.

Сессионный компонент не является персистентным. (То есть его данные не сохраняются в базе данных.)

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

Типы сессионных бинов

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

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

Сессионные бины, сохраняющие состояние

Состояние объекта состоит из значений его переменных. В сессионном бине с состоянием переменные объекта представляют состояние уникальной сессии клиента/компонента. Поскольку клиент взаимодействует («разговаривает») со своим компонентом, это состояние часто называют диалоговым состоянием.

Как следует из названия, сессионный компонент похож на интерактивную сессию. Сессионный компонент не является общим. У него может быть только один клиент, точно так же, как у интерактивной сессии может быть только один пользователь. Когда клиент завершает работу, его сессионный компонент завершает работу и больше не связан с клиентом.

Состояние сохраняется в течение сессии клиент/компонент. Если клиент удаляет компонент, сессия завершается, и состояние исчезает. Однако этот временный характер состояния не является проблемой, поскольку, когда разговор между клиентом и компонентом заканчивается, нет необходимости сохранять состояние.

Сессионные бины, не сохраняющие состояние

Сессионный компонент без сохранения состояния не поддерживает диалоговое состояние с клиентом. Когда клиент вызывает методы бина, не сохраняющего состояние, переменные объекта бина могут содержать состояние, специфичное для этого клиента, но только на время вызова. Когда метод завершён, специфичное для клиента состояние не должно сохраняться. Однако клиенты могут изменять состояние переменных объекта в компонентах без сохранения состояния, собранных в пулы, и это состояние сохраняется до следующего вызова этого компонента. За исключением вызова метода, все объекты бина без сохранения состояния эквивалентны, что позволяет контейнеру EJB назначать объект любому клиенту. То есть состояние сессионного компонента без сохранения состояния должно применяться ко всем клиентам.

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

Сессионный компонент без сохранения состояния может реализовывать веб-сервис, но сессионный компонент с сохранением состояния не может.

Сессионные бины-синглтоны

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

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

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

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

Когда использовать сессионные бины

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

  • Состояние компонента представляет собой взаимодействие между компонентом и конкретным клиентом.

  • Бин должен содержать информацию о клиенте через вызовы методов.

  • Бин является посредником между клиентом и другими компонентами приложения, предоставляя клиенту упрощённое представление.

  • За кулисами компонент управляет рабочим процессом нескольких Enterprise-бинов.

Чтобы повысить производительность, вы можете выбрать сессионный компонент без сохранения состояния, если он имеет какую-либо из этих характеристик.

  • Состояние бина не имеет данных для конкретного клиента.

  • В одном вызове метода компонент выполняет общую задачу для всех клиентов. Например, вы можете использовать сессионный компонент без сохранения состояния для отправки электронного письма, подтверждающего онлайн-заказ.

  • Бин реализует веб-сервис.

Сессионные компоненты-синглтоны подходят в следующих случаях.

  • Состояние должно быть общим для всего приложения.

  • Доступ к одному Enterprise-бину должен осуществляться несколькими потоками одновременно.

  • Приложению требуется Enterprise-бин для выполнения задач при запуске и завершении работы приложения.

  • Бин реализует веб-сервис.


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