• Управление жизненным циклом компонентов — контейнер отвечает за управление жизненным циклом каждого компонента.

• Обмен сообщениями — контейнер позволяет EJB-компонентам, управляемым сообщениями, прослушивать пункты назначения и получать сообщения без чрезмерного использования JMS.

• Управление транзакциями — благодаря управлению декларативными транзакциями EJB-компонент может задействовать аннотации для информирования контейнера о том, какую политику тот должен использовать по отношению к транзакциям. Контейнер заботится о выполнении фиксации или отката.

• Безопасность — в случае с EJB-компонентами можно определить управление доступом на уровне класса или метода, чтобы форсировать авторизацию пользователей и ролей.

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

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

• Асинхронные вызовы методов — начиная с EJB 3.1, теперь можно выполнять асинхронные вызовы без обмена сообщениями.

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

EJB-компоненты являются управляемыми объектами. Фактически они считаются управляемыми MBean-компонентами (Managed Beans). Когда клиент вызывает EJB-компонент, он не работает непосредственно с экземпляром этого EJB-компонента, а взаимодействует с прокси, что наблюдается в случае с экземпляром. Каждый раз, когда клиент вызывает метод в EJB-компоненте, этот вызов на самом деле идет через прокси и перехватывается контейнером, который обеспечивает службы от имени экземпляра EJB-компонента. Разумеется, все это абсолютно прозрачно для клиента. С момента своего создания и до уничтожения корпоративный EJB-компонент располагается в контейнере.

В приложении Java EE EJB-контейнер обычно взаимодействует с другими контейнерами — контейнером сервлетов (отвечающим за управление выполнением сервлетов и применением JSF-страниц), контейнером клиентского приложения (Application Client Container — ACC) (для управления автономными приложениями), а также с брокером сообщений (для отправки, постановки в очередь и получения сообщений), поставщиком постоянства и т. д.

Контейнеры обеспечивают для EJB-компонентов набор служб. С другой стороны, EJB-компоненты не могут создавать потоки или управлять ими, осуществлять доступ к файлам с использованием java.io, генерировать ServerSocket, загружать «родные» библиотеки или применять библиотеку AWT (Abstract Window Toolkit) либо API-интерфейсы Swing для взаимодействия с пользователем.

<p>EJB Lite</p>

Корпоративные EJB-компоненты стали доминирующей компонентной моделью в Java EE 7, будучи самым простым средством обработки транзакций, а также безопасной обработки бизнес-данных. Однако EJB 3.2 все еще определяет сложные технологии, которые сегодня используются в меньшей степени, например интероперабельность IIOP (Internet InterOrb Protocol — Межброкерный протокол для Интернета), а это означает, что любому новому поставщику, реализующему спецификацию EJB 3.2, придется реализовать и эти технологии. При знакомстве с EJB-компонентами разработчики также оказались бы отягощенными многими технологиями, которые они в ином случае никогда бы не использовали.

По этим причинам спецификация определяет минимальное подмножество полной версии EJB API под названием EJB Lite. Сюда входит небольшая, но удачная подборка EJB-функций, подходящих для написания переносимой транзакционной и безопасной бизнес-логики. Любое приложение EJB Lite может быть развернуто в любом продукте Java EE, который реализует EJB 3.2. EJB Lite состоит из подмножества EJB API, приведенного в табл. 7.1.

Таблица 7.1. Сравнение EJB Lite и полной версии EJB
Перейти на страницу:

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