Enterprise Java Beans (EJB).

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

ejb

Существует три основных типа EJB-компонентов:

  • без сохранения состояния (stateless);
  • с сохранение состояние (stateful);
  • синглтоны или одиночки (singleton).

Теперь остановимся на каждом из них поподробнее.

Бины без сохранения состояния, как можно понять из названия, не способны сохранять свое состояние между вызовами бизнес-методов. То есть их нельзя использовать для поддержания длительного диалога с пользователем. Если операция укладывается в вызов одного метода, то имеет смысл использовать именно бины без сохранения состояния. Они не привязываются к конкретному клиенту. Для создания бинов такого типа применяется аннотация @Stateless.

Таким образом мы определили бин EJB и несколько бизнес-методов, выполняющих манипуляции над данными — поиск книги в БД и по первичному ключу. Для подробностей, касающихся работой с БД, читайте раздел, посвященный JPA.
Если на протяжении взаимодействия с пользователем нам нужно поддерживать с ним некоторый диалог, например, каждое его следующее действие зависит от результатов предыдущего, то следует использовать бины, способные сохранять свое состояние между вызовами различных методов. Например, клиент ищет книги, некоторые из них добавляет в корзину, а затем переходит к подтверждению своего заказа. Для объявления бина с сохранением состояния существует аннотация @Stateful.

Немного разъясним суть описанного нами класса и работы stateful-бинов. Данный класс реализует интерфейс Serializable. И неспроста. Дело в том, что если вашей системой одновременно пользуется очень большое количество клиентов, то вам приходится хранить в памяти их все. Для снижения потребления памяти они могут временно сбрасываться в память. Например, если пользователь некоторое время не проявляет никакой активности, то его состояние сохраняется, а сам компонент выгружается из памяти, что повышает эффективность.
Наша корзина для товаров представляет собой обычный список, в который последовательно добавляются или удаляются товары. Когда пользователь хочет подтвердить свой заказ, то вызывается метод checkOrder(), помеченной аннотацией @Remove. Это аннотация говорит о том, что наш бин больше не нужен, и ему можно удалить.

Последний тип управляемых бинов, который мы рассмотрим — это реализация всем знакомого паттерна Singleton. Если какой-то объект в вашей системе должен существовать в единственном экземпляре, то используется аннотация @Singleton.

На этом наш обзор компонентов EJB подошел к концу. До встречи в следующих статьях!

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *