EJB 3 в действии
Покупка
Тематика:
Программирование на Java
Издательство:
ДМК Пресс
Перевод:
Киселев Артём Николаевич
Год издания: 2023
Кол-во страниц: 619
Дополнительно
Вид издания:
Практическое пособие
Уровень образования:
Профессиональное образование
ISBN: 978-5-89818-325-7
Артикул: 487727.03.99
Фреймворк EJB 3 предоставляет стандартный способ оформления прикладной логики в виде управляемых модулей, которые выполняются на стороне сервера, упрощая тем самым создание, сопровождение и расширение приложений Java EE. Версия EJB 3.2 включает большее число расширений и более тесно интегрируется с другими технологиями Java, такими как CDI, делая разработку еще проще. Книга знакомит читателя с EJB на многочисленных примерах кода, сценариях из реальной жизни и иллюстрациях. Помимо основ в ней описываются некоторые особенности внутренней реализации, наиболее эффективные приемы использования, шаблоны проектирования, даются советы по оптимизации производительности и различные способы доступа, включая веб-службы, службы REST и веб-сокеты. Издание предназначено программистам, уже знающим язык Java. Опыт работы с EJB или Java EE не требуется.
- Полная коллекция по информатике и вычислительной технике
- Веб-разработка
- ДМК Пресс. Информационные системы и технологии
- ДМК Пресс. ИТ-технологии для профессионалов
- Интермедиатор. Информационные системы и технологии (сводная)
- Интермедиатор. ИТ-технологии для профессионалов (сводная)
- Программирование
- Программирование на Java
Тематика:
ББК:
УДК:
ОКСО:
- ВО - Бакалавриат
- 09.03.01: Информатика и вычислительная техника
- 09.03.02: Информационные системы и технологии
- 09.03.03: Прикладная информатика
- 09.03.04: Программная инженерия
ГРНТИ:
Скопировать запись
Фрагмент текстового слоя документа размещен для индексирующих роботов
Дебу Панда, Реза Рахман, Райан Купрак, Майкл Ремижан EJB 3 в действии
M A N N I N G SHELTER ISLAND EJB 3 in Action Second Edition DEBU PANDA REZA RAHMAN RYAN CUPRAK MICHAEL REMIJAN
Москва, 2023 ДЕБУ ПАНДА РЕЗА РАХМАН РАЙАН КУПРАК МАЙКЛ РЕМИЖАН EJB 3 в действии 2-е издание, электронное
УДК 004.455.2 ББК 32.973.41 П16 П16 Панда, Дебу. EJB 3 в действии / Д. Панда, Р. Рахман, Р. Купрак и др. ; пер. с англ. А. Н. Киселева. — 2-е изд., эл. — 1 файл pdf : 620 с. — Москва : ДМК Пресс, 2023. — Систем. требования: Adobe Reader XI либо Adobe Digital Editions 4.5 ; экран 10". — Текст : электронный. ISBN 978-5-89818-325-7 Фреймворк EJB 3 предоставляет стандартный способ оформления прикладной логики в виде управляемых модулей, которые выполняются на стороне сервера, упрощая тем самым создание, сопровождение и расширение приложений Java EE. Версия EJB 3.2 включает большее число расширений и более тесно интегрируется с другими технологиями Java, такими как CDI, делая разработку еще проще. Книга знакомит читателя с EJB на многочисленных примерах кода, сценариях из реальной жизни и иллюстрациях. Помимо основ в ней описываются некоторые особенности внутренней реализации, наиболее эффективные приемы использования, шаблоны проектирования, даются советы по оптимизации производительности и различные способы доступа, включая веб-службы, службы REST и веб-сокеты. Издание предназначено программистам, уже знающим язык Java. Опыт работы с EJB или Java EE не требуется. УДК 004.455.2 ББК 32.973.41 Электронное издание на основе печатного издания: EJB 3 в действии / Д. Панда, Р. Рахман, Р. Купрак и др. ; пер. с англ. А. Н. Киселева. — Москва : ДМК Пресс, 2015. — 618 с. — ISBN 978-5-97060-135-8. — Текст : непосредственный. Все права защищены. Любая часть этой книги не может быть воспроизведена в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. Материал, изложенный в данной книге, многократно проверен. Но поскольку вероятность технических ошибок все равно существует, издательство не может гарантировать абсолютную точность и правильность приводимых сведений. В связи с этим издательство не несет ответственности за возможные ошибки, связанные с использованием книги. В соответствии со ст. 1299 и 1301 ГК РФ при устранении ограничений, установленных техническими средствами защиты авторских прав, правообладатель вправе требовать от нарушителя возмещения убытков или выплаты компенсации. ISBN 978-5-89818-325-7 © 2014 by Manning Publications Co. © Оформление, перевод на русский язык, и здание, ДМК Пресс, 2015
ОГЛАВЛЕНИЕ Предисловие ......................................................................... 14 Благодарности .................................................................................................. 15 О книге .............................................................................................................. 18 Структура книги ................................................................................................ 19 Загружаемый исходный код .............................................................................. 20 Соглашения по оформлению исходного кода .................................................... 20 Автор в сети ...................................................................................................... 20 О названии ........................................................................................................ 21 Об авторах ........................................................................................................ 21 Об иллллюстрации на обложке .......................................................................... 22 ЧАСТЬ I Обзор ландшафта EJB ............................................................. 23 Глава 1. Что такое EJB 3 ........................................................... 24 1.1. Обзор EJB ................................................................................................... 25 1.1.1. EJB как модель компонентов .............................................................. 26 1.1.2. Службы компонентов EJB ................................................................... 26 1.1.3. Многоуровневые архитектуры и EJB ................................................... 28 1.1.4. Почему стоит выбрать EJB 3? .............................................................. 32 1.2. Основы типов EJB ....................................................................................... 34 1.2.1. Сеансовые компоненты ...................................................................... 34 1.2.2. Компоненты, управляемые сообщениями ........................................... 35 1.3. Связанные спецификации .......................................................................... 35 1.3.1. Сущности и Java Persistence API .......................................................... 35 1.3.2. Контексты и внедрение зависимостей для Java EE .............................. 37 1.4. Реализации EJB .......................................................................................... 37 1.4.1. Серверы приложений ......................................................................... 38 1.4.2. EJB Lite ............................................................................................... 39 1.4.3. Встраиваемые контейнеры ................................................................. 40 1.4.4. Использование EJB 3 в Tomcat ............................................................ 40 1.5. Превосходные инновации ........................................................................... 41 1.5.1. Пример «Hello User» ............................................................................ 41 1.5.2. Аннотации и XML ................................................................................. 42 1.5.3. Значения по умолчанию и явные настройки ........................................ 43 1.5.4. Внедрение зависимостей и поиск в JNDI ............................................ 44 1.5.5. CDI и механизм внедрения в EJB ........................................................ 45 1.5.6. Тестируемость компонентов POJO ...................................................... 45
Оглавление 1.6. Новшества в EJB 3.2 ................................................................................... 46 1.6.1. Поддержка EJB 2 теперь является необязательной ............................. 46 1.6.2. Усовершенствования в компонентах, управляемых сообщениями ...... 46 1.6.3. Усовершенствования в сеансовых компонентах с сохранением состояния .................................................................................................... 47 1.6.4. Упрощение локальных интерфейсов компонентов без сохранения состояния .................................................................................................... 48 1.6.5. Усовершенствования в TimerService API .............................................. 49 1.6.6. Усовершенствования в EJBContainer API ............................................. 49 1.6.7. Группы EJB API .................................................................................... 49 1.7. В заключение .............................................................................................. 50 Глава 2. Первая проба EJB ........................................................ 51 2.1. Введение в приложение ActionBazaar ......................................................... 52 2.1.1. Архитектура ........................................................................................ 52 2.1.2. Решение на основе EJB 3 .................................................................... 54 2.2. Реализация прикладной логики с применением EJB 3 ................................ 55 2.2.1. Использование сеансовых компонентов без сохранения состояния ... 56 2.2.2 Использование сеансовых компонентов с сохранением состояния ..... 58 2.2.3. Модульное тестирование компонентов EJB 3 ..................................... 63 2.3. Использование CDI с компонентами EJB 3 .................................................. 64 2.3.1. Использование CDI с JSF 2 и EJB 3 ...................................................... 65 2.3.2. Использование CDI с EJB 3 и JPA 2 ...................................................... 68 2.4. Использование JPA 2 с EJB 3 ...................................................................... 70 2.4.1. Отображение сущностей JPA 2 в базу данных ..................................... 71 2.4.2. Использование EntityManager ............................................................. 72 2.5. В заключение .............................................................................................. 74 ЧАСТЬ II Компоненты EJB ..................................................................... 75 Глава 3. Реализация прикладной логики с помощью сеансовых компонентов .......................................................................... 76 3.1. Знакомство с сеансовыми компонентами ................................................... 77 3.1.1. Когда следует использовать сеансовые компоненты .......................... 78 3.1.2. Состояние компонента и типы сеансовых компонентов ...................... 80 3.2. Сеансовые компоненты без сохранения состояния .................................... 83 3.2.1. Когда следует использовать сеансовые компоненты без сохранения состояния ........................................................................... 83 3.2.2. Организация компонентов в пулы ....................................................... 84 3.2.3. Пример BidService .............................................................................. 86 3.2.4. Применение аннотации @Stateless ..................................................... 89 3.2.5. Прикладные интерфейсы компонентов ............................................... 90 3.2.6. События жизненного цикла ................................................................. 93 3.2.7. Эффективное использование сеансовых компонентов без сохранения состояния ........................................................................... 96 3.3. Сеансовые компоненты с сохранением состояния ...................................... 97 3.3.1. Когда следует использовать сеансовые компоненты с сохранением состояния ............................................................................. 98
Оглавление 3.3.2. Пассивация компонентов .................................................................... 99 3.3.3. Сеансовые компоненты с сохранением состояния в кластере .......... 100 3.3.4. Пример реализации создания учетной записи .................................. 100 3.3.5. Применение аннотации @Stateful ..................................................... 104 3.3.6. Прикладные интерфейсы компонентов ............................................. 105 3.3.7. События жизненного цикла ............................................................... 105 3.3.8. Эффективное использование сеансовых компонентов с сохранением состояния ........................................................................... 107 3.4. Сеансовые компоненты-одиночки ............................................................ 109 3.4.1. Когда следует использовать сеансовые компоненты-одиночки ........ 110 3.4.2. Пример реализации «товара дня» в ActionBazaar .............................. 111 3.4.3. Применение аннотации @Singleton ................................................... 113 3.4.4. Управление конкуренцией в компоненте-одиночке ........................... 114 3.4.5. Прикладной интерфейс компонента ................................................. 117 3.4.6. События жизненного цикла ............................................................... 118 3.4.7. Аннотация @Startup .......................................................................... 119 3.4.8. Эффективное использование сеансовых компонентов-одиночек ..... 120 3.5. Асинхронные сеансовые компоненты ....................................................... 122 3.5.1. Основы асинхронного вызова ........................................................... 122 3.5.2. Когда следует использовать асинхронные сеансовые компоненты ................................................................................................ 123 3.5.3. Пример компонента ProcessOrder ..................................................... 124 3.5.4. Применение аннотации @Asynchronous ............................................ 126 3.5.5. Применение интерфейса Future ........................................................ 127 3.5.6. Эффективное использование асинхронных сеансовых компонентов .............................................................................................. 127 3.6. В заключение ............................................................................................ 128 Глава 4. Обмен сообщениями и разработка компонентов MDB ..... 130 4.1. Концепции обмена сообщениями ............................................................. 131 4.1.1. Промежуточное ПО передачи сообщений ......................................... 131 4.1.2. Обмен сообщениями в ActionBazaar ................................................. 132 4.1.3. Модели обмена сообщениями .......................................................... 134 4.2. Введение в JMS ........................................................................................ 136 4.2.1. Интерфейс JMS Message .................................................................. 138 4.3. Использование компонентов MDB ............................................................ 140 4.3.1. Когда следует использовать обмен сообщениями и компоненты MDB ..................................................................................... 141 4.3.2. Почему следует использовать MDB? ................................................. 141 4.3.3. Разработка потребителя сообщений с применением MDB ................ 143 4.3.4. Применение аннотации @MessageDriven .......................................... 144 4.3.5. Реализация интерфейса MessageListener ......................................... 145 4.3.6. Использование параметра ActivationConfigProperty .......................... 146 4.3.7. События жизненного цикла ............................................................... 149 4.3.8. Отправка сообщений JMS из компонентов MDB ............................... 151 4.3.9. Управление транзакциями MDB ........................................................ 152 4.4. Приемы использования компонентов MDB ............................................... 153 4.5. В заключение ............................................................................................ 155
Оглавление Глава 5. Контекст EJB времени выполнения, внедрение зависимостей и сквозная логика ..............................................157 5.1. Контекст EJB ............................................................................................ 157 5.1.1. Основы контекста EJB....................................................................... 158 5.1.2. Интерфейсы контекста EJB ............................................................... 159 5.1.3. Доступ к контейнеру через контекст EJB ........................................... 160 5.2. Использование EJB DI и JNDI .................................................................... 161 5.2.1. Пример использования JNDI в EJB .................................................... 162 5.2.2. Как присваиваются имена компонентам EJB ..................................... 166 5.2.3. Внедрение зависимостей с применением @EJB ............................... 169 5.2.4. Когда следует использовать внедрение зависимостей EJB ............... 170 5.2.5. Аннотация @EJB в действии .............................................................. 171 5.2.6. Внедрение ресурсов с помощью аннотации @Resource .................... 173 5.2.7. Когда следует использовать внедрение ресурсов ............................. 175 5.2.8. Аннотация @Resource в действии ..................................................... 175 5.2.9. Поиск ресурсов и компонентов EJB в JNDI ........................................ 178 5.2.10. Когда следует использовать поиск в JNDI ....................................... 180 5.2.11. Контейнеры клиентских приложений .............................................. 180 5.2.12. Встраиваемые контейнеры ............................................................. 181 5.2.13. Эффективный поиск и внедрение компонентов EJB ........................ 183 5.2.14. Механизмы внедрения EJB и CDI .................................................... 184 5.3. AOP в мире EJB: интерцепторы ................................................................. 185 5.3.1. Что такое AOP? ................................................................................. 185 5.3.2. Основы интерцепторов ..................................................................... 186 5.3.3. Когда следует использовать интерцепторы ...................................... 187 5.3.4. Порядок реализации интерцепторов ................................................ 187 5.3.5. Определение интерцепторов ............................................................ 188 5.3.6. Интерцепторы в действии ................................................................. 192 5.3.7. Эффективное использование интерцепторов ................................... 198 5.3.8. Интерцепторы CDI и EJB ................................................................... 199 5.4. В заключение ............................................................................................ 205 Глава 6. Транзакции и безопасность .........................................206 6.1. Знакомство с транзакциями ..................................................................... 207 6.1.1. Основы транзакций ........................................................................... 208 6.1.2. Транзакции в Java ............................................................................. 210 6.1.3. Транзакции в EJB .............................................................................. 212 6.1.4. Когда следует использовать транзакции ........................................... 214 6.1.5. Как реализованы транзакции EJB ..................................................... 215 6.1.6. Двухфазное подтверждение ............................................................. 217 6.1.7. Производительность JTA .................................................................. 218 6.2. Транзакции, управляемые контейнером ................................................... 219 6.2.1. Досрочное оформление заказов с применением модели CMT .......... 219 6.2.2. Аннотация @TransactionManagement ................................................. 220 6.2.3. Аннотация @TransactionAttribute........................................................ 221 6.2.4. Откат транзакций в модели CMT ....................................................... 224 6.2.5. Транзакции и обработка исключений ................................................ 226 6.2.6. Синхронизация с сеансом ................................................................ 228 6.2.7. Эффективное использование модели CMT ....................................... 228
Оглавление 6.3. Транзакции, управляемые компонентами ................................................. 229 6.3.1. Досрочное оформление заказов с применением модели BMT .......... 230 6.3.2. Получение экземпляра UserTransaction ............................................. 231 6.3.3. Использование интерфейса UserTransaction ..................................... 232 6.3.4. Эффективное использование модели BMT ....................................... 234 6.4. Безопасность EJB ..................................................................................... 234 6.4.1. Аутентификация и авторизация ........................................................ 235 6.4.2. Пользователи, группы и роли ............................................................ 236 6.4.3. Как реализована поддержка безопасности в EJB .............................. 237 6.4.4. Декларативное управление безопасностью в EJB ............................. 241 6.4.5. Программное управление безопасностью в EJB ............................... 243 6.4.6. Эффективное использование поддержки безопасности в EJB .......... 246 6.5. В заключение ............................................................................................ 247 Глава 7. Планирование и таймеры ............................................249 7.1. Основы планирования .............................................................................. 250 7.1.1. Возможности Timer Service ............................................................... 250 7.1.2. Таймауты .......................................................................................... 253 7.1.3. Cron .................................................................................................. 253 7.1.4. Интерфейс Timer .............................................................................. 254 7.1.5. Типы таймеров .................................................................................. 256 7.2. Декларативные таймеры .......................................................................... 257 7.2.1. Аннотация @Schedule ....................................................................... 257 7.2.2. Аннотация @Schedules ...................................................................... 258 7.2.3. Параметры аннотации @Schedule ..................................................... 258 7.2.4. Пример использования декларативных таймеров ............................. 259 7.2.5. Синтаксис правил в стиле cron .......................................................... 260 7.3. Программные таймеры ............................................................................. 263 7.3.1. Знакомство с программными таймерами ......................................... 263 7.3.2. Пример использования программных таймеров ............................... 265 7.3.3. Эффективное использование программных таймеров EJB ............... 267 7.4. В заключение ............................................................................................ 268 Глава 8. Компоненты EJB как веб-службы ..................................270 8.1. Что такое «веб-служба»? ........................................................................... 271 8.1.1. Свойства веб-служб .......................................................................... 271 8.1.2. Транспорты ....................................................................................... 272 8.1.3. Типы веб-служб ................................................................................ 272 8.1.4. Java EE API для веб-служб ................................................................. 273 8.1.5. Веб-службы и JSF ............................................................................. 274 8.2. Экспортирование компонентов EJB с использованием SOAP (JAX-WS) ..... 274 8.2.1. Основы SOAP .................................................................................... 274 8.2.2. Когда следует использовать службы SOAP ........................................ 279 8.2.3. Когда следует экспортировать компоненты EJB в виде веб-служб SOAP ......................................................................................... 280 8.2.4. Веб-служба SOAP для ActionBazaar ................................................... 281 8.2.5. Аннотации JAX-WS ............................................................................ 286 8.2.6. Эффективное использование веб-служб SOAP в EJB ........................ 290 8.3. Экспортирование компонентов EJB с использованием REST (JAX-RS) ...... 292
Оглавление 8.3.1. Основы REST .................................................................................... 293 8.3.2. Когда следует использовать REST/JAX-RS ........................................ 296 8.3.3. Когда следует экспортировать компоненты EJB в виде веб-служб REST ......................................................................................... 297 8.3.4. Веб-служба REST для ActionBazaar ................................................... 298 8.3.5. Аннотации JAX-RS ............................................................................. 302 8.3.6. Эффективное использование веб-служб REST в EJB ........................ 307 8.4. Выбор между SOAP и REST ....................................................................... 308 8.5. В заключение ............................................................................................ 310 ЧАСТЬ III Использование EJB совместно с JPA и CDI ................................ 311 Глава 9. Сущности JPA ........................................................... 312 9.1. Введение в JPA ......................................................................................... 313 9.1.1. Несоответствие интерфейсов ........................................................... 313 9.1.2. Взаимосвязь между EJB 3 и JPA ........................................................ 314 9.2. Предметное моделирование .................................................................... 315 9.2.1. Введение в предметное моделирование ........................................... 315 9.2.2. Предметная модель приложения ActionBazaar .................................. 315 9.3. Реализация объектов предметной области с помощью JPA ...................... 320 9.3.1. Аннотация @Entity ............................................................................. 320 9.3.2. Определение таблиц......................................................................... 322 9.3.3. Отображение свойств в столбцы ....................................................... 325 9.3.4. Типы представления времени ........................................................... 330 9.3.5. Перечисления ................................................................................... 331 9.3.6. Коллекции ........................................................................................ 332 9.3.7. Определение идентичности сущностей ............................................ 334 9.3.8. Генерирование значений первичных ключей ..................................... 339 9.4. Отношения между сущностями ................................................................. 343 9.4.1. Отношение «один к одному» ............................................................. 344 9.4.2. Отношения «один ко многим» и «многие к одному» ........................... 346 9.4.3. Отношение «многие ко многим» ........................................................ 349 9.5. Отображение наследования ..................................................................... 350 9.5.1. Стратегия единой таблицы ............................................................... 351 9.5.2. Стратегия соединения таблиц .......................................................... 353 9.5.3. Стратегия отдельных таблиц для каждого класса .............................. 354 9.6. В заключение ............................................................................................ 357 Глава 10. Управление сущностями ...........................................358 10.1. Введение в использование EntityManager ............................................... 358 10.1.1. Интерфейс EntityManager ................................................................ 359 10.1.2. Жизненный цикл сущностей ............................................................ 361 10.1.3. Контекст сохранения, области видимости и EntityManager .............. 364 10.1.4. Использование EntityManager в ActionBazaar .................................. 366 10.1.5. Внедрение EntityManager ................................................................ 367 10.1.6. Внедрение EntityManagerFactory ..................................................... 369 10.2. Операции с хранилищем ......................................................................... 371 10.2.1. Сохранение сущностей ................................................................... 372