Изучаем Java EE 7 - [109]

Шрифт
Интервал

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

Понятие корпоративных EJB-компонентов

EJB-компоненты — это серверные компоненты, которые инкапсулируют бизнес-логику, заботятся о транзакциях и безопасности. У них также имеется интегрированный стек для обмена сообщениями, планирования, удаленного доступа, конечных точек веб-служб (SOAP и REST), внедрения зависимостей, управления жизненным циклом компонентов, аспектно-ориентированного программирования (Aspect-Oriented Programming — AOP) с использованием перехватчиков и т. д. Кроме того, EJB-компоненты «бесшовно» интегрируются с другими технологиями Java SE и Java EE вроде JDBC, JavaMail, JPA, Java Transaction API (JTA), Java Messaging Service (JMS), сервиса аутентификации и авторизации Java (Java Authentication and Authorization Service — JAAS), Java Naming and Directory Interface (JNDI) и удаленного вызова методов (Remote Method Invocation — RMI). Вот почему они используются для создания уровня бизнес-логики (рис. 7.1), располагаются над уровнем базы данных и осуществляют оркестровку на уровне бизнес-модели. EJB-компоненты выступают в качестве точки входа для технологий уровня представления, например JavaServer Faces (JSF), а также для всех внешних служб (JMS или веб-служб).


Рис. 7.1. Разделение архитектуры на уровни


EJB-компоненты — это очень мощная модель программирования, которая объединяет в себе легкость использования и надежность. Сегодня EJB-компоненты представляют собой простую модель разработки на стороне сервера с использованием Java, которая облегчает работу, одновременно привнося возможность повторного использования и масштабируемость в критически важные корпоративные приложения. Все это является результатом снабжения аннотацией одного Java-объекта, развертывание которого будет производиться в контейнере. EJB-контейнер — это среда выполнения, которая обеспечивает службы, например, для управления транзакциями, управления конкурентным доступом, организации пула и проверки прав на доступ. Исторически сложилось так, что серверы приложений привнесли другие особенности вроде кластеризации, балансировки нагрузки и обхода отказа. Кроме того, EJB-разработчики могут сосредоточиться на реализации бизнес-логики, пока контейнер занимается решением всех технических вопросов.

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

Типы EJB-компонентов

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

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

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

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

Разумеется, у всех трех типов EJB-компонентов имеются специфические особенности, однако у них также есть много общего. Прежде всего, они обладают одинаковой моделью программирования. Как вы увидите позднее, у EJB-компонента может иметься локальный и/или удаленный интерфейс либо не быть вообще никакого интерфейса. Сессионные EJB-компоненты управляются контейнером, поэтому необходимо упаковать их в архив (файл с расширением JAR, WAR или EAR) и произвести их развертывание в контейнере.

EJB-компоненты, управляемые сообщениями (Message-Driven Beans — MDB), применяются для интеграции с внешними системами путем получения асинхронных сообщений с использованием JMS. Хотя EJB-компоненты, управляемые сообщениями, являются частью спецификации EJB, я рассматриваю их отдельно (в главе 13), поскольку соответствующая компонентная модель главным образом применяется для интеграции с промежуточным программным обеспечением, ориентированным на обработку сообщений (Message-Oriented Middleware — MOM). EJB-компоненты, управляемые сообщениями, обычно делегируют бизнес-логику сессионным EJB-компонентам.


Рекомендуем почитать
Pro Git

Разработчику часто требуется много сторонних инструментов, чтобы создавать и поддерживать проект. Система Git — один из таких инструментов и используется для контроля промежуточных версий вашего приложения, позволяя вам исправлять ошибки, откатывать к старой версии, разрабатывать проект в команде и сливать его потом. В книге вы узнаете об основах работы с Git: установка, ключевые команды, gitHub и многое другое.В книге рассматриваются следующие темы:основы Git;ветвление в Git;Git на сервере;распределённый Git;GitHub;инструменты Git;настройка Git;Git и другие системы контроля версий.


Java 7

Рассмотрено все необходимое для разработки, компиляции, отладки и запуска приложений Java. Изложены практические приемы использования как традиционных, так и новейших конструкций объектно-ориентированного языка Java, графической библиотеки классов Swing, расширенной библиотеки Java 2D, работа со звуком, печать, способы русификации программ. Приведено полное описание нововведений Java SE 7: двоичная запись чисел, строковые варианты разветвлений, "ромбовидный оператор", NIO2, новые средства многопоточности и др.


MFC и OpenGL

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


Симуляция частичной специализации

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


Обработка событий в С++

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


Питон — модули, пакеты, классы, экземпляры

Python - объектно-ориентированный язык сверхвысокого уровня. Python, в отличии от Java, не требует исключительно объектной ориентированности, но классы в Python так просто изучить и так удобно использовать, что даже новые и неискушенные пользователи быстро переходят на ОО-подход.