УДК 004.438Java EE
ББК 32.973.26-018.2
Х41
Х41
Хеффельфингер, Дэвид.
Java EE 6 и сервер приложений GlassFish 3 / Д. Хеффельфингер ; пер. с англ.
Е. Н. Карышева. — 2-е изд., эл. — 1 файл pdf : 417 с. — Москва : ДМК Пресс,
2023. — Систем. требования: Adobe Reader XI либо Adobe Digital Editions 4.5 ;
экран 10". — Текст : электронный.
ISBN 978-5-89818-519-0
Книга представляет собой практическое руководство с очень удобным подходом, позволяющим
читателю быстрее освоить технологии Java EE 6. Все рассмотренные основные
интерфейсы Java EE 6 и подробная информация о сервере GlassFish 3 подкреплены
практическими примерами их использования.
Платформа Java Enterprise Edition (Java EE) 6 является отраслевым стандартом для
корпоративных вычислений Java, а сервер приложений GlassFish представляет собой эталонную
среду реализации спецификации Java EE. В книге рассматриваются различные
соглашения и аннотации Java EE 6, которые помогут существенно упростить разработку
корпоративных приложений Java. Описываются последние версии технологий Servlet,
JSP, JSF, JPA, EJB и JAX-WS, а также новые дополнения к спецификации Java EE, в частности
JAX-RS и CDI. Рассмотрены задачи администрирования, конфигурирования и использования
сервера GlassFish 3 для развертывания корпоративных приложений.
Настоящее издание предназначено для разработчиков Java, желающих стать специалистами
в разработке корпоративных приложений с использованием платформы Java EE 6.
Для изучения материала необходимо иметь некоторый опыт работы с Java, однако знаний
в области Java EE или J2EE не требуется.
Книга официально рекомендуется компанией Oracle — разработчиком перечисленных
технологий — в качестве учебного пособия.
УДК 004.438Java EE
ББК 32.973.26-018.2
Электронное издание на основе печатного издания: Java EE 6 и сервер приложений GlassFish 3 /
Д. Хеффельфингер ; пер. с англ. Е. Н. Карышева. — Москва : ДМК Пресс, 2013. — 416 с. — ISBN
978-5-94074-902-8. — Текст : непосредственный.
Все права защищены. Любая часть этой книги не может быть воспроизведена в какой бы то ни было форме и какими бы то ни
было средствами без письменного разрешения владельцев авторских прав.
Материал, изложенный в данной книге, многократно проверен. Но поскольку вероятность технических ошибок все равно существует,
издательство не может гарантировать абсолютную точность и правильность приводимых сведений. В связи с этим издательство
не несет ответственности за возможные ошибки, связанные с использованием книги.
В соответствии со ст. 1299 и 1301 ГК РФ при устранении ограничений, установленных техническими средствами защиты авторских прав,
правообладатель вправе требовать от нарушителя возмещения убытков или выплаты компенсации.
ISBN 978-5-89818-519-0
© Published by Packt Publishing Ltd.
© Оформление, перевод на русский язык
ДМК Пресс, 2013
Стр.5
Содержание
Об авторе ����������������������������������������������������������������������������������������� 5
О рецензентах ��������������������������������������������������������������������������������� 6
Содержание
Предисловие
7
16
Темы, освещаемые в книге ���������������������������������������������������������� 16
Что нужно для чтения этой книги ������������������������������������������������ 19
Для кого эта книга ������������������������������������������������������������������������ 19
Соглашения ���������������������������������������������������������������������������������� 19
Поддержка клиентов ��������������������������������������������������������������������� 20
Сообщения об ошибках ���������������������������������������������������������������� 20
Незаконное воспроизведение содержимого книги ���������������������� 21
Вопросы ����������������������������������������������������������������������������������������� 21
1. Знакомство с сервером GlassFish
22
Общий обзор Java EE и GlassFish ������������������������������������������������ 22
Новые возможности Java EE �������������������������������������������������������� 23
JavaServer Faces (JSF) 2�0 �������������������������������������������������������������� 23
Enterprise JavaBeans (EJB) 3�1 �������������������������������������������������������� 23
API Персистентности Java (JPA) 2�0 ����������������������������������������������� 24
Контексты и инжекция зависимости для Java (Web Beans 1�0) ����������� 24
API Java Сервлета 3.0 ������������������������������������������������������������������� 24
API Java для веб-сервисов RESTful (JAX-RS) 1.1 ����������������������������� 25
API Java для веб-сервисов XML (JAX-WS) 2.2 �������������������������������� 25
Архитектура Java для связывания с XML (JAXB) 2.2 ������������������������ 25
Новые возможности GlassFish v�3 ������������������������������������������������� 25
Преимущества GlassFish �������������������������������������������������������������� 26
Стр.8
8
Содержание
Получение GlassFish ��������������������������������������������������������������������� 27
Установка GlassFish ���������������������������������������������������������������������� 28
Зависимости GlassFish ����������������������������������������������������������������� 28
Выполнение установки ���������������������������������������������������������������� 29
Проверка установки ��������������������������������������������������������������������� 34
Развертывание нашего первого приложения Java EE �������������������� 35
Развертывание приложения через веб-консоль �������������������������������� 35
Отмена развертывания приложения через веб-консоль ��������������������� 37
Развертывание приложения с помощью командной строки ���������������� 38
Каталог autodeploy ����������������������������������������������������������������������� 39
Утилита командной строки asadmin ������������������������������������������������ 40
Домены GlassFish �������������������������������������������������������������������������� 41
Создание доменов ������������������������������������������������������������������������ 41
Удаление доменов ������������������������������������������������������������������������ 43
Остановка домена ������������������������������������������������������������������������� 43
Настройка подключения к базе данных ��������������������������������������� 43
Создание пулов соединений ��������������������������������������������������������� 44
Создание источников данных ������������������������������������������������������� 48
Заключительные замечания ��������������������������������������������������������� 49
Резюме �������������������������������������������������������������������������������������������� 49
2. Разработка и развертывание сервлета
50
Что такое сервлет? ������������������������������������������������������������������������ 50
Написание нашего первого сервлета �������������������������������������������� 51
Компиляция сервлета ������������������������������������������������������������������� 52
Конфигурирование сервлета �������������������������������������������������������� 53
Упаковка веб-приложения ������������������������������������������������������������ 55
Развертывание веб-приложения ��������������������������������������������������� 56
Тестирование веб-приложения ���������������������������������������������������� 56
Обработка HTML-форм ���������������������������������������������������������������� 58
Переадресация запросов и перенаправление откликов �������������� 64
Переадресация запроса ���������������������������������������������������������������� 64
Перенаправление отклика ������������������������������������������������������������ 67
Стр.9
Содержание
9
Сохранение данных приложения между запросами �������������������� 69
Новые возможности, появившиеся в Сервлете 3.0 ���������������������� 71
Необязательный дескриптор развертывания web.xml ������������������� 71
Аннотация @WebServlet �������������������������������������������������������������� 71
Передача сервлету параметров инициализации через аннотации � 73
Аннотация @WebFilter ����������������������������������������������������������������� 74
Аннотация @WebListener ������������������������������������������������������������� 76
Подключаемость ������������������������������������������������������������������������� 78
Программное конфигурирование веб-приложений ����������������������� 80
Асинхронная обработка ���������������������������������������������������������������� 82
Резюме ������������������������������������������������������������������������������������������� 84
3. JavaServer Pages
85
Введение в JavaServer Pages ���������������������������������������������������������� 85
Разработка нашей первой JSP-страницы ������������������������������������ 86
Неявные объекты JSP ������������������������������������������������������������������� 90
JSP и JavaBeans ������������������������������������������������������������������������������ 97
Повторное использование JSP-контента ������������������������������������� 101
Пользовательские теги JSP ���������������������������������������������������������� 103
Расширение класса SimpleTagSupport ����������������������������������������� 104
Использование файлов тегов для создания
пользовательских тегов JSP ��������������������������������������������������������� 109
Унифицированный язык выражений ���������������������������������������� 113
XML-синтаксис JSP ��������������������������������������������������������������������� 116
Резюме ������������������������������������������������������������������������������������������� 118
4. Библиотека стандартных тегов JSP
119
JSTL-библиотека базовых тегов �������������������������������������������������� 119
JSTL-библиотека тегов форматирования ����������������������������������� 127
JSTL-библиотека SQL-тегов �������������������������������������������������������� 131
JSTL-библиотека XML-тегов ������������������������������������������������������ 136
Функции JSTL ����������������������������������������������������������������������������� 140
Резюме ������������������������������������������������������������������������������������������� 143
Стр.10
10
5. Подключение к базе данных
Содержание
144
База данных CUSTOMERDB ������������������������������������������������������ 144
JDBC ���������������������������������������������������������������������������������������������� 145
Извлечение данных из базы данных �������������������������������������������� 146
Изменение информации в базе данных ��������������������������������������� 152
API Персистентности Java ����������������������������������������������������������� 154
Отношения сущности ������������������������������������������������������������������ 159
Отношения «один к одному» ������������������������������������������������������� 159
Отношения «один ко многим» ����������������������������������������������������� 164
Отношения «многие ко многим» �������������������������������������������������� 168
Составные первичные ключи ������������������������������������������������������ 173
Язык запросов персистентности Java ����������������������������������������� 177
Новые функции, введенные в JPA 2.0 ���������������������������������������� 181
API Критериев ���������������������������������������������������������������������������� 181
Поддержка проверки допустимости со стороны бинов ���������������� 184
Резюме ������������������������������������������������������������������������������������������� 186
6. Java Server Faces
Введение в JSF 2.0 ������������������������������������������������������������������������� 187
Фэйслеты ������������������������������������������������������������������������������������ 187
Необязательный файл faces-config.xml ���������������������������������������� 188
Стандартное расположение ресурсов ������������������������������������������ 188
Разработка нашего первого JSF 2.0-приложения ����������������������� 189
Фэйслеты ������������������������������������������������������������������������������������ 189
Этапы проекта ����������������������������������������������������������������������������� 193
Проверка допустимости �������������������������������������������������������������� 195
Группировка компонентов ���������������������������������������������������������� 197
Отправка формы �������������������������������������������������������������������������� 197
Управляемые бины ���������������������������������������������������������������������� 198
Контексты управляемых бинов ���������������������������������������������������� 199
Навигация ���������������������������������������������������������������������������������� 200
Пользовательская проверка допустимости данных ������������������ 201
Создание нестандартных элементов верификации ��������������������� 202
Методы блока проверки допустимости ��������������������������������������� 204
187
Стр.11
Содержание
11
Настройка сообщений JSF по умолчанию ���������������������������������� 207
Настройка стилей сообщения ������������������������������������������������������ 207
Настройка текста сообщения ������������������������������������������������������� 209
Интеграция JSF и JPA ������������������������������������������������������������������ 211
Включение Ajax в приложения JSF 2.0 ���������������������������������������� 218
Стандартные компоненты JSF ��������������������������������������������������� 222
Базовые компоненты JSF ������������������������������������������������������������� 222
Тег ������������������������������������������������������������������ 222
Тег ������������������������������������������������������������������������������� 222
Тег �������������������������������������������������������������������������� 223
Тег ������������������������������������������������������������� 223
Тег ���������������������������������������������������������������� 223
Тег ������������������������������������������������������������������������ 224
Тег ����������������������������������������������������������������������������� 224
Тег ������������������������������������������������������������������������������ 225
Тег ��������������������������������������������������������������������� 225
Тег ������������������������������������������������������������������������� 225
Тег ���������������������������������������������������������������������������� 226
Тег ������������������������������������������������������������������ 226
Тег ����������������������������������������������������������������������� 226
Тег ���������������������������������������������������������������������� 226
Тег �������������������������������������������������� 227
Тег �������������������������������������������������������������������������� 227
Тег ������������������������������������������������������������������� 227
Тег �������������������������������������������������������� 228
Тег ����������������������������������������������������������������� 228
Тег ����������������������������������������������������������� 228
Тег ������������������������������������������������������������������ 229
Тег �������������������������������������������������������������� 229
Тег ������������������������������������������������������������������������� 229
Тег ��������������������������������������������������������� 229
Тег ������������������������������������������������������������������������� 230
Тег ������������������������������������������������������������������������������ 230
Тег ���������������������������������������������������������������������� 230
Стр.12
12
Содержание
HTML-компоненты JSF ��������������������������������������������������������������� 231
Тег ����������������������������������������������������������������������������� 231
Тег ���������������������������������������������������������������������������� 231
Тег �������������������������������������������������������������������������� 231
Тег �������������������������������������������������������������� 231
Тег ����������������������������������������������������������������� 232
Тег ����������������������������������������������������������������������� 232
Тег ������������������������������������������������������������������������������ 232
Тег ������������������������������������������������������������������ 233
Тег ������������������������������������������������������������������������������ 233
Тег �������������������������������������������������������������������� 233
Тег ��������������������������������������������������������������������� 233
Тег ����������������������������������������������������������������������� 234
Тег ������������������������������������������������������������������ 234
Тег ������������������������������������������������������������������������������� 234
Тег ������������������������������������������������������������������������� 234
Тег ������������������������������������������������������������������������ 235
Тег ������������������������������������������������������������������ 235
Тег �������������������������������������������������������������������� 235
Тег ��������������������������������������������������������������������� 236
Тег �������������������������������������������������������������������� 236
Тег �������������������������������������������������������������� 236
Тег ���������������������������������������������������������������������� 236
Тег ����������������������������������������������������������������������� 236
Тег �������������������������������������������������������������������� 237
Тег ���������������������������������������������������� 238
Тег ������������������������������������������������������� 238
Тег ����������������������������������������������������������� 238
Тег ������������������������������������������������������������� 239
Тег ������������������������������������������������������������� 239
Тег ��������������������������������������������������������������� 239
Тег ��������������������������������������������������������������� 239
Дополнительные библиотеки компонентов JSF ��������������������������� 240
Резюме ������������������������������������������������������������������������������������������ 240
Стр.13
Содержание
13
7. Служба обмена сообщениями Java
241
Настройка GlassFish для использования JMS ��������������������������� 241
Создание фабрики JMS-соединений �������������������������������������������� 241
Создание очереди JMS-сообщений ���������������������������������������������� 243
Создание темы JMS-сообщений �������������������������������������������������� 244
Очереди сообщений ���������������������������������������������������������������������� 245
Отправка сообщений в очередь сообщений ��������������������������������� 245
Извлечение сообщений из очереди сообщений ��������������������������� 249
Асинхронный прием сообщений из очереди сообщений ������������� 250
Просмотр очередей сообщений ��������������������������������������������������� 253
Темы сообщений ��������������������������������������������������������������������������� 254
Отправка сообщений теме сообщений ���������������������������������������� 254
Получение сообщений от темы сообщений ��������������������������������� 255
Создание долговременных подписчиков �������������������������������������� 257
8. Безопасность
Резюме ������������������������������������������������������������������������������������������� 260
261
Области безопасности ������������������������������������������������������������������ 261
Предопределенные области безопасности ���������������������������������� 262
Область администратора ������������������������������������������������������������� 262
Область файла ��������������������������������������������������������������������������� 264
Стандартная аутентификация через область файла ��������������������� 265
Область сертификата ������������������������������������������������������������������ 276
Создание самоподписанных сертификатов ��������������������������������� 276
Конфигурирование приложений для использования
области сертификата ������������������������������������������������������������������� 280
Определение дополнительных областей ������������������������������������� 283
Определение дополнительных областей файла ��������������������������� 283
Определение дополнительных областей сертификата ����������������� 285
Определение области LDAP �������������������������������������������������������� 286
Определение области Solaris ������������������������������������������������������� 287
Определение области JDBC ��������������������������������������������������������� 288
Определение пользовательских областей ����������������������������������� 293
Резюме ������������������������������������������������������������������������������������������ 298
Стр.14
14
9. Enterprise JavaBeans
Содержание
299
Сеансовые бины ��������������������������������������������������������������������������� 300
Простой сеансовый бин ��������������������������������������������������������������� 300
Более реалистический пример ����������������������������������������������������� 303
Вызов сеансовых бинов из веб-приложений �������������������������������� 305
Одноэлементный сеансовый бин (Singleton) ������������������������������� 306
Асинхронные вызовы метода ������������������������������������������������������ 307
Управляемые сообщением бины ������������������������������������������������� 309
Транзакции в Enterprise JavaBeans �������������������������������������������� 310
Транзакции, управляемые контейнером �������������������������������������� 311
Транзакции, управляемые бином ������������������������������������������������� 313
Жизненный цикл Enterprise JavaBeans ��������������������������������������� 315
Жизненный цикл сеансового бина с сохранением состояния ������ 316
Жизненный цикл сеансового бина, не сохраняющего состояние � 319
Жизненный цикл управляемых сообщением бинов ��������������������� 321
Служба таймера EJB ������������������������������������������������������������������� 322
Выражения таймера EJB на основе календаря ����������������������������� 324
Безопасность EJB ������������������������������������������������������������������������� 326
Аутентификация клиента ����������������������������������������������������������� 329
Резюме ������������������������������������������������������������������������������������������� 330
10. Контексты и инжекция зависимости
Именованные бины ���������������������������������������������������������������������� 332
Инжекция зависимости ���������������������������������������������������������������� 334
Квалификаторы ��������������������������������������������������������������������������� 335
Контексты именованных бинов ��������������������������������������������������� 338
Резюме ������������������������������������������������������������������������������������������ 345
11. Веб-сервисы JAX-WS
346
Разработка веб-сервисов JAX-WS ���������������������������������������������� 346
Разработка клиента веб-сервиса ������������������������������������������������� 351
Отправка вложений веб-сервисам ����������������������������������������������� 357
332
Стр.15
Содержание
15
Представление EJB как веб-сервисов ����������������������������������������� 359
Клиенты веб-сервиса EJB ����������������������������������������������������������� 360
Безопасность веб-сервисов ��������������������������������������������������������� 360
Безопасность веб-сервисов EJB �������������������������������������������������� 362
Резюме ������������������������������������������������������������������������������������������� 364
12. RESTful веб-сервисы в Jersey и JAX-RS
Введение в веб-сервисы RESTful и JAX-RS �������������������������������� 365
Разработка простого веб-сервиса RESTful ���������������������������������� 366
Конфигурирование пути к ресурсам REST для
нашего приложения ��������������������������������������������������������������������� 368
Конфигурирование через web.xml ������������������������������������������������ 368
Конфигурирование через аннотацию @ApplicationPath ������������������� 369
Тестирование нашего веб-сервиса ���������������������������������������������� 370
Преобразование данных между Java и XML с помощью JAXB �� 372
Разработка клиента веб-сервиса RESTful ����������������������������������� 375
Параметры запроса и пути ���������������������������������������������������������� 377
Параметры запроса ��������������������������������������������������������������������� 377
Отправка параметров запроса через клиентский API Jersey ������������� 378
Параметры пути �������������������������������������������������������������������������� 380
Отправка параметров пути через клиентский API Jersey ����������������� 382
Приложение А: Отправка электронной почты из
приложений Java EE
384
Конфигурирование сервера GlassFish ����������������������������������������� 384
Реализация функциональности доставки
электронной почты ���������������������������������������������������������������������� 387
Приложение Б: Интеграция с IDE
Алфавитный указатель
390
NetBeans ��������������������������������������������������������������������������������������� 390
Eclipse �������������������������������������������������������������������������������������������� 392
397
365
Стр.16