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

EJB 3 в действии

Покупка
Артикул: 487727.02.99
К покупке доступен более свежий выпуск Перейти
Фреймворк EJB 3 предоставляет стандартныий способ оформления прикладной логики в виде управляемых модулей, которые выполняются на стороне сервера, упрощая тем самым создание, сопровождение и расширение приложений Java ЕЕ. Версия EJB 3.2 включает большее число расширений и более тесно интегрируется с другими технологиями Java, такими как CDI, делая разработку еще проще. Книга знакомит читателя с EJB на многочисленных примерах кода, сценариях из реальной жизни и иллюстрациях. Помимо основ в ней описываются некоторые особенности внутренней реализации, наиболее эффективные приемы использования, шаблоны проектирования, даются советы по оптимизации производительности и различные способы доступа, включая веб-службы, службы REST и веб-сокеты. Издание предназначено программистам, уже знающим язык Java. Опыт работы с EJB или Java ЕЕ не требуется.
EJB 3 в действии / Дебу Панда, Реза Рахман, Райан Купрак, Майкл Ремижан ; пер. с англ. А.Н. Киселева. - Москва : ДМК Пресс, 2015. - 618 с. - ISBN 978-5-97060-135-8. - Текст : электронный. - URL: https://znanium.ru/catalog/product/1027806 (дата обращения: 28.11.2024). – Режим доступа: по подписке.
Фрагмент текстового слоя документа размещен для индексирующих роботов
EJB 3 В ДЕЙСТВИИ

Дебу Панда
Реза Рахман
Райан Купрак

Майкл Ремижан

Фреймворк EJB 3 предоставляет стандартный 
способ оформления прикладной логики в виде 
управляемых модулей, которые выполняются 
на стороне сервера, упрощая тем самым создание, сопровождение и расширение приложений Java EE. Версия EJB 3.2 включает большее 
число расширений и значений по умолчанию, 
и более тесно интегрируется с другими технологиями Java, такими как CDI, делая разработку 
еще проще.
Книга «EJB 3 в действии»  – это руководство 
по разработке компонентов Java EE с использованием EJB 3.2, JPA и CDI. Она знакомит читателя с EJB на многочисленных примерах кода, 
сценариях из реальной жизни и иллюстрациях. 
Помимо основ в этой книге описываются некоторые особенности внутренней реализации, 
наиболее эффективные приемы использования, шаблоны проектирования, даются советы 
по оптимизации производительности и различные способы доступа, включая веб-службы, 
службы REST  и веб-сокеты.
Читатели должны знать язык Java. Опыт работы 
с EJB или Java EE не требуется.
Что внутри:
• содержимое книги соответствует версии EJB 3.2;
• описывается возможность хранения POJO 

в базе данных с помощью JPA 2.1;

• внедрение зависимостей и управление ком
понентами с помощью CDI 1.1;

• разработка интерактивных приложений с 

применением WebSocket 1.0.

Дебу Панда, Реза Рахман, Райан Купрак, Майкл 
Ремижан  – опытные архитекторы Java, разработчики, авторы и лидеры сообщества. 

«Исчерпывающий учебник по EJB 3!»

Луис Пенья, HP

«Реза входит в состав 
экспертной группы EJB 
3.2 Expert Group и имеет 
большой опыт преподавания. Здесь вы найдете 
все, что вам нужно.»

Джон Гриффин, 
Progrexion ASG

«Полно и ясно описывает, как использовать 
платформу JEE на полную мощь.»

Рик Вагнер, 
Red Hat, Inc.

«Содержит ценные сведения и для новичков, и 
для экспертов в EJB.»

Джит Марва, gen-E

«Если вы испытываете 
проблемы с EJB – эта 
книга поможет их решить.»

Юрген де Коммер, 

Imtech ICT

Интернет-магазин: www.dmkpress.com 
Книга - почтой: orders@alians-kniga.ru
Оптовая продажа: “Альянс-книга” 
Тел.: (499)782-3889. book@alians-kniga.ru

В ДЕЙСТВИИ

www.дмк.рф
9 785970 601358

ISBN 978-5-97060-135-8

EJB 3 В ДЕЙСТВИИ

Дебу Панда, Реза Рахман, Райан Купрак, Майкл Ремижан

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

Москва, 2015

ДЕБУ ПАНДА
РЕЗА РАХМАН
РАЙАН КУПРАК
МАЙКЛ РЕМИЖАН

EJB 3 в действии

УДК     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 (англ.)                         ©2014 by Manning Publications Co. 
ISBN 978-5-97060-135-8 (рус.)                           © Оформление, перевод на русский язык, 

                      издание, ДМК Пресс, 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

К покупке доступен более свежий выпуск Перейти