Книжная полка Сохранить
Размер шрифта:
А
А
А
|  Шрифт:
Arial
Times
|  Интервал:
Стандартный
Средний
Большой
|  Цвет сайта:
Ц
Ц
Ц
Ц
Ц

EJB 3 в действии

Покупка
Артикул: 487727.03.99
Доступ онлайн
799 ₽
В корзину
Фреймворк EJB 3 предоставляет стандартный способ оформления прикладной логики в виде управляемых модулей, которые выполняются на стороне сервера, упрощая тем самым создание, сопровождение и расширение приложений Java EE. Версия EJB 3.2 включает большее число расширений и более тесно интегрируется с другими технологиями Java, такими как CDI, делая разработку еще проще. Книга знакомит читателя с EJB на многочисленных примерах кода, сценариях из реальной жизни и иллюстрациях. Помимо основ в ней описываются некоторые особенности внутренней реализации, наиболее эффективные приемы использования, шаблоны проектирования, даются советы по оптимизации производительности и различные способы доступа, включая веб-службы, службы REST и веб-сокеты. Издание предназначено программистам, уже знающим язык Java. Опыт работы с EJB или Java EE не требуется.
Панда, Д. EJB 3 в действии : практическое руководство / Д. Панда, Р. Рахман, Р. Купрак и др. ; пер. с англ. А. Н. Киселева. - 2-е изд., - Москва : ДМК Пресс, 2023. - 619 с. - ISBN 978-5-89818-325-7. - Текст : электронный. - URL: https://znanium.ru/catalog/product/2102612 (дата обращения: 28.11.2024). – Режим доступа: по подписке.
Фрагмент текстового слоя документа размещен для индексирующих роботов
Дебу Панда, Реза Рахман, Райан Купрак, Майкл Ремижан

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

Доступ онлайн
799 ₽
В корзину