•
•
•
•
•
•
•
После того как будет произведено развертывание 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 для взаимодействия с пользователем.
EJB Lite
Корпоративные 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.