Изучаем 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-компонентам.
![Геймдизайн. Рецепты успеха лучших компьютерных игр от Super Mario и Doom до Assassin’s Creed и дальше](/storage/book-covers/d0/d0fc13172d4310c9da7b10ba57a3fcb2e3d9f10d.jpg)
Что такое ГЕЙМДИЗАЙН? Это не код, графика или звук. Это не создание персонажей или раскрашивание игрового поля. Геймдизайн – это симулятор мечты, набор правил, благодаря которым игра оживает. Как создать игру, которую полюбят, от которой не смогут оторваться? Знаменитый геймдизайнер Тайнан Сильвестр на примере кейсов из самых популярных игр рассказывает как объединить эмоции и впечатления, игровую механику и мотивацию игроков. Познакомитесь с принципами дизайна, которыми пользуются ведущие студии мира! Создайте игровую механику, вызывающую эмоции и обеспечивающую разнообразие.
![Обработка событий в С++](/build/oblozhka.dc6e36b8.jpg)
В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.
![Обработка баз данных на Visual Basic.NET](/storage/book-covers/87/87af4d75eb4b1e6d5504a783e699baf32f5b5a23.jpg)
Это практическое руководство разработчика программного обеспечения на Visual Basic .NET и ADO.NET, предназначенное для создания приложений баз данных на основе WinForms, Web-форм и Web-служб. В книге описываются практические способы решения задач доступа к данным, с которыми сталкиваются разработчики на Visual Basic .NET в своей повседневной деятельности. Книга начинается с основных сведений о создании баз данных, использовании языка структурированных запросов SQL и системы управления базами данных Microsoft SQL Server 2000.
![MFC и OpenGL](/build/oblozhka.dc6e36b8.jpg)
В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.
![Симуляция частичной специализации](/storage/book-covers/7e/7e33d937f206a76edb7f45006e896cc191605df5.jpg)
В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.
![Питон — модули, пакеты, классы, экземпляры](/build/oblozhka.dc6e36b8.jpg)
Python - объектно-ориентированный язык сверхвысокого уровня. Python, в отличии от Java, не требует исключительно объектной ориентированности, но классы в Python так просто изучить и так удобно использовать, что даже новые и неискушенные пользователи быстро переходят на ОО-подход.