УДК 004.455.2
ББК 32.973.41
П16
П16 Дебу Панда, Реза Рахман, Райан Купрак, Майкл Ремижан
EJB 3 в действии. / Пер. с англ. Киселев А. Н. – М.: ДМК Пресс, 2015. –
618 с.: ил.
ISBN 978-5-97060-135-8
Фреймворк EJB 3 предоставляет стандартныий способ оформления
прикладной логики в виде управляемых модулей, которые выполняются на
стороне сервера, упрощая тем самым создание, сопровождение и расширение
приложений Java EE. Версия EJB 3.2 включает большее число расширений и
более тесно интегрируется с другими технологиями Java, такими как CDI, делая
разработку еще проще. Книга знакомит читателя с EJB на многочисленных
примерах кода, сценариях из реальной жизни и иллюстрациях. Помимо
основ в ней описываются некоторые особенности внутренней реализации,
наиболее эффективные приемы использования, шаблоны проектирования,
даются советы по оптимизации производительности и различные способы
доступа, включая веб-службы, службы REST и веб-сокеты.
Издание предназначено программистам, уже знающим язык Java. Опыт
работы с EJB или Java EE не требуется.
УДК 004.455.2
ББК 32.973.41
Original English language edition published by Manning Publications Co., Rights and
Contracts Special Sales Department, 20 Baldwin Road, PO Box 261, Shelter Island, NY
11964. ©2014 by Manning Publications Co.. Russian-language edition copyright © 2014
by DMK Press. All rights reserved.
Все права защищены. Любая часть этой книги не может быть воспроизведена
в какой бы то ни было форме и какими бы то ни было средствами без письменного
разрешения владельцев авторских прав.
Материал, изложенный в данной книге, многократно проверен. Но, поскольку
вероятность технических ошибок все равно существует, издательство не может гарантировать
абсолютную точность и правильность приводимых сведений. В связи
с этим издательство не несет ответственности за возможные ошибки, связанные с
использованием книги.
ISBN 978-1-93518-299-3 (англ.)
ISBN 978-5-97060-135-8 (рус.)
©2014 by Manning Publications Co.
© Оформление, перевод на русский язык,
издание, ДМК Пресс, 2015
Стр.5
ОГЛАВЛЕНИЕ
Предисловие ......................................................................... 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
Стр.6
6
Оглавление
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
Стр.7
Оглавление
7
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
Стр.8
8
Оглавление
Глава 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
Стр.9
Оглавление
9
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
Стр.10
10
Оглавление
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
Стр.11
Оглавление
11
10.2.2. Извлечение сущностей по ключу ..................................................... 373
10.2.3. Изменение сущностей .................................................................... 379
10.2.4. Удаление сущностей ....................................................................... 382
10.3. Запросы сущностей ................................................................................ 384
10.3.1. Динамические запросы ................................................................... 385
10.3.2. Именованные запросы .................................................................... 385
10.4. В заключение .......................................................................................... 386
Глава 11. JPQL ......................................................................387
11.1. Введение в JPQL ..................................................................................... 387
11.1.1. Типы инструкций ............................................................................. 388
11.1.2. Предложение FROM ........................................................................ 390
11.1.3. Инструкция SELECT ........................................................................ 401
11.1.4. Управление результатами ............................................................... 404
11.1.5. Соединение сущностей................................................................... 405
11.1.6. Операции массового удаления и изменения ................................... 408
11.2. Запросы Criteria ...................................................................................... 409
11.2.1. Метамодели.................................................................................... 410
11.2.2. CriteriaBuilder .................................................................................. 413
11.2.3. CriteriaQuery.................................................................................... 414
11.2.4. Корень запроса ............................................................................... 415
11.2.5. Предложение FROM ........................................................................ 419
11.2.6. Предложение SELECT ..................................................................... 419
11.3. Низкоуровневые запросы ....................................................................... 422
11.3.1. Динамические SQL-запросы ........................................................... 423
11.3.2. Именованные SQL-запросы ............................................................ 424
11.3.3. Хранимые процедуры ..................................................................... 425
11.4. В заключение .......................................................................................... 429
Глава 12. Использование CDI в EJB 3 .........................................430
12.1. Введение в CDI ....................................................................................... 431
12.1.1. Службы CDI ..................................................................................... 433
12.1.2. Отношения между CDI и EJB 3 ......................................................... 436
12.1.3. Отношения между CDI и JSF 2 ......................................................... 437
12.2. Компоненты CDI ...................................................................................... 437
12.2.1. Как пользоваться компонентами CDI ............................................... 438
12.2.2. Именование компонентов и их разрешение в выражениях EL .......... 439
12.2.3. Области видимости компонентов.................................................... 440
12.3. Следующее поколение механизмов внедрения зависимостей ................ 443
12.3.1. Внедрение с помощью @Inject ........................................................ 443
12.3.2. Фабричные методы ......................................................................... 445
12.3.3. Квалификаторы ............................................................................... 448
12.3.4. Методы уничтожения ...................................................................... 449
12.3.5. Определение альтернатив .............................................................. 450
12.4. Интерцепторы и декораторы ................................................................... 453
12.4.1. Привязка интерцепторов ................................................................ 453
12.4.2. Декораторы .................................................................................... 456
12.5. Стереотипы ............................................................................................ 457
12.6. Внедрение событий ................................................................................ 459
Стр.12
12
Оглавление
12.7. Диалоги .................................................................................................. 461
12.8. Эффективное использование CDI в EJB 3 ............................................... 467
12.9. В заключение .......................................................................................... 469
ЧАСТЬ IV
Ввод EJB в действие ..............................................................471
Глава 13. Упаковка приложений EJB 3 .......................................472
13.1. Упаковка приложений ............................................................................. 472
13.1.1. Строение системы модулей Java EE ................................................ 475
13.1.2. Загрузка модулей Java EE ............................................................... 476
13.2. Загрузка классов .................................................................................... 478
13.2.1. Основы загрузки классов ................................................................ 478
13.2.2. Загрузка классов в приложениях Java EE ........................................ 478
13.2.3. Зависимости между модулями Java EE ........................................... 481
13.3. Упаковка сеансовых компонентов и компонентов, управляемых
сообщениями .................................................................................................. 483
13.3.1. Упаковка EJB-JAR ........................................................................... 483
13.3.2. Упаковка компонентов EJB в модуль WAR ........................................ 485
13.3.3. XML против аннотаций .................................................................... 488
13.3.4. Переопределение настроек, указанных в аннотациях ..................... 492
13.3.5. Определение интерцепторов по умолчанию ................................... 493
13.4. Упаковка сущностей JPA ......................................................................... 494
13.4.1. Модуль доступа к хранимым данным............................................... 494
13.4.2. Описание модуля доступа к хранимым данным в persistence.xml .... 496
13.5. Упаковка компонентов CDI ...................................................................... 498
13.5.1. Модули CDI ..................................................................................... 498
13.5.2. Дескриптор развертывания beans.xml ............................................ 499
13.5.3. Атрибут bean-discovery-mode.......................................................... 500
13.6. Эффективные приемы и типичные проблемы развертывания ................. 501
13.6.1. Эффективные приемы упаковки и развертывания ........................... 501
13.6.2. Решение типичных проблем развертывания ................................... 503
13.7. В заключение .......................................................................................... 504
Глава 14. Использование веб-сокетов с EJB 3 .............................505
14.1. Ограничения схемы взаимодействий «запрос/ответ» ............................. 505
14.2. Введение в веб-сокеты ........................................................................... 507
14.2.1. Основы веб-сокетов........................................................................ 507
14.2.2. Веб-сокеты и AJAX .......................................................................... 511
14.2.3. Веб-сокеты и Comet ........................................................................ 513
14.3. Веб-сокеты и Java EE .............................................................................. 515
14.3.1. Конечные точки веб-сокетов ........................................................... 516
14.3.2. Интерфейс Session ......................................................................... 517
14.3.3. Кодеры и декодеры ......................................................................... 520
14.4. Веб-сокеты в приложении ActionBazaar .................................................. 523
14.4.1. Использование программных конечных точек ................................. 526
14.4.2. Использование аннотированных конечных точек ............................. 530
14.5. Эффективное использование веб-сокетов .............................................. 537
14.6. В заключение .......................................................................................... 539
Стр.13
Оглавление
13
Глава 15. Тестирование компонентов EJB ..................................541
15.1. Введение в тестирование ....................................................................... 541
15.1.1. Стратегии тестирования ................................................................. 542
15.2. Модульное тестирование компонентов EJB ............................................ 544
15.3. Интеграционное тестирование с использованием EJBContainer ............. 548
15.3.1. Настройка проекта .......................................................................... 549
15.3.2. Интеграционный тест ...................................................................... 552
15.4. Интеграционное тестирование с применением Arquillian ........................ 555
15.4.1. Настройка проекта .......................................................................... 556
15.4.2. Интеграционный тест ...................................................................... 560
15.5. Приемы эффективного тестирования ..................................................... 563
15.6. В заключение .......................................................................................... 565
Приложение А. Дескриптор развертывания, справочник ..............566
A.1. ejb-jar.xml .................................................................................................. 566
A.1.1.
................................................................................ 567
A.1.2. ........................................................................... 567
A.1.3. Интерцепторы .................................................................................. 571
A.1.4. ...................................................................... 571
Приложение B. Введение в Java EE 7 SDK ..................................576
B.1. Установка Java EE 7 SDK ........................................................................... 576
B.2. GlassFish Administration Console ................................................................ 581
B.3. Запуск и остановка GlassFish .................................................................... 584
B.4. Запуск приложения «Hello World» .............................................................. 586
Приложение C. Сертификационные экзамены разработчика
для EJB 3..............................................................................590
C.1. Начало процесса сертификации ............................................................... 591
C.2. Порядок прохождения сертификационных испытаний
для разработчиков EJB 3 ................................................................................. 593
C.3. Знания, необходимые для прохождения испытаний ................................. 595
C.4. Подготовка к испытаниям ......................................................................... 597
C.5. Сертификационные испытания ................................................................ 598
Предметный указатель ...........................................................600
Стр.14