УДК 004.438Java EE
ББК 32.973.26-018.2
Х41
Дэвид Хеффельфингер
Х41 Разработка приложений Java EE 6 в NetBeans 7. Пер. с англ.: Карышев Е. Н.
– М.: ДМК Пресс, 2013. – 330 с.: ил.
ISBN 978-5-94074-914-1
Книга представляет собой практическое руководство по использованию возможностей
IDE NetBeans 7 для разработки корпоративных приложений, совместимых со стандартом
Java EE 6.
В книге показаны приемы эффективного программирования, задействующие контекстные
меню и «горячие» клавиши, мастера и шаблоны среды NetBeans, затрагиваются вопросы
создания, конфигурирования, развертывания, отладки и профилирования корпоративных
приложений с использованием средств встроенных в IDE NetBeans.
Существенное внимание уделено основным API Java EE в контексте их работы в среде
NetBeans. Подробно рассмотрены возможности NetBeans по автоматизации разработки
приложений с использованием таких API, как Servlet, JSP, JSTL, JSF, JMS, JPA, JDBC, EJB,
JAX-WS, JAX-RS, а также по созданию для них инфраструктурных, коммуникационных и
конфигурационных элементов. Затронуты вопросы взаимодействия среды NetBeans с различными
серверами приложений, СУБД и внешними службами.
Приводится пример автоматизированной генерации законченного корпоративного приложения
из существующей схемы базы данных, а также примеры создания веб-сервисов и
автоматизированной генерации их клиентов.
Книга рассчитана на разработчиков желающих разрабатывать Java EE-приложения c использованием
функциональных возможностей IDE NetBeans.
Для чтения книги необходимо иметь некоторый опыт работы с Java, в то время как начального
знакомства с NetBeans и Java EE не требуется.
All rights reserved. No part of this book may be reproduced, stored in a retrieval system, or transmitted
in any form or by any means, without the prior written permission of the publisher, except in the case of brief
quotations embedded in critical articles or reviews.
Все права защищены. Любая часть этой книги не может быть воспроизведена в какой бы то ни было
форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав.
Материал, изложенный в данной книге, многократно проверен. Но, поскольку вероятность технических
ошибок все равно существует, издательство не может гарантировать абсолютную точность и
правильность приводимых сведений. В связи с этим издательство не несет ответственности за возможные
ошибки, связанные с использованием книги.
ISBN 978-1-84951-270-1 (англ.)
ISBN 978-5-94074-914-1 (рус.)
© Published by Packt Publishing Ltd.
© Оформление, перевод на русский язык
ДМК Пресс, 2013
Стр.5
Содержание
Об авторе ����������������������������������������������������������������������������������������� 5
О рецензентах ��������������������������������������������������������������������������������� 6
Предисловие
13
Вопросы, освещаемые в книге ������������������������������������������������������ 13
Что нужно для чтения этой книги ������������������������������������������������ 14
Для кого эта книга ������������������������������������������������������������������������ 15
Соглашения ���������������������������������������������������������������������������������� 15
Поддержка клиентов ��������������������������������������������������������������������� 16
Сообщения об ошибках ���������������������������������������������������������������� 16
Незаконное воспроизведение содержимого книги ���������������������� 16
Вопросы ����������������������������������������������������������������������������������������� 16
1. Знакомство с NetBeans
17
Введение ���������������������������������������������������������������������������������������� 17
Получение NetBeans ��������������������������������������������������������������������� 18
Установка NetBeans ���������������������������������������������������������������������� 21
Microsoft Windows ������������������������������������������������������������������������ 21
Mac OSx ��������������������������������������������������������������������������������������� 21
Linux и Solaris ������������������������������������������������������������������������������ 22
Другие платформы ����������������������������������������������������������������������� 22
Процедура установки ������������������������������������������������������������������� 22
Первый запуск NetBeans ��������������������������������������������������������������� 27
Конфигурирование NetBeans для разработки
Java EE-приложений ��������������������������������������������������������������������� 28
Интегрирование NetBeans со сторонним сервером приложений ��� 28
Интегрирование NetBeans с СУРБД стороннего производителя ��� 30
Стр.8
8
Содержание
Развертывание нашего первого приложения ������������������������������ 34
Подсказки NetBeans для эффективной разработки �������������������� 37
Автозавершение кода ������������������������������������������������������������������� 37
Шаблоны кода ����������������������������������������������������������������������������� 40
Клавиши быстрого вызова ����������������������������������������������������������� 41
Изучение визуальных индикаторов NetBeans ������������������������������� 44
Резюме �������������������������������������������������������������������������������������������� 46
2. Разработка веб-приложений, содержащих
Сервлеты и JSP
47
Создание нашего первого веб-приложения ��������������������������������� 47
Изменение кода, сгенерированного NetBeans ������������������������������ 52
Разработка сервлета ���������������������������������������������������������������������� 67
Добавление сервлета к нашему приложению ������������������������������� 67
Безопасность веб-приложений ������������������������������������������������������ 75
Реализация аутентификации на основе формы ����������������������������� 77
Конфигурирование безопасности, специфичной для GlassFish ����� 83
Фрагменты JSP ����������������������������������������������������������������������������� 87
Создание фрагмента JSP в NetBeans �������������������������������������������� 87
Резюме �������������������������������������������������������������������������������������������� 90
3. Улучшение функциональности JSP с помощью
JSTL и пользовательских тегов
91
Базовые теги JSTL ������������������������������������������������������������������������� 92
Условное отображение части страницы тегом �������������������� 92
Отображение взаимоисключающей разметки с помощью
тега ����������������������������������������������������������������������������� 95
Итерация по массивам или коллекциям с помощью
тега ��������������������������������������������������������������������������� 98
SQL-теги JSTL ����������������������������������������������������������������������������� 101
Извлечение данных из базы данных с помощью
тега ��������������������������������������������������������������������������� 103
Стр.9
9
Изменение данных в базе данных с помощью
тега ��������������������������������������������������������������������������� 107
Вставка данных в базу данных ���������������������������������������������������� 107
Обновление данных базы данных ����������������������������������������������� 110
Удаление данных из базы данных ����������������������������������������������� 112
Заключительные замечания о JSTL �������������������������������������������� 115
Пользовательские теги JSP ���������������������������������������������������������� 115
Резюме ������������������������������������������������������������������������������������������� 121
4. Разработка веб-приложений с использованием
JavaServer Faces 2.0
122
Введение в JavaServer Faces ��������������������������������������������������������� 122
Разработка нашего первого приложения JSF ����������������������������� 123
Создание нового проекта JSF ����������������������������������������������������� 123
Шаблоны фэйслетов �������������������������������������������������������������������� 142
Добавление шаблона фэйслета к нашему проекту ���������������������� 144
Использование шаблона �������������������������������������������������������������� 144
Составные компоненты �������������������������������������������������������������� 148
Резюме ������������������������������������������������������������������������������������������ 152
5. Создание изящных веб-приложений
с помощью PrimeFaces
153
Наш первый проект PrimeFaces ������������������������������������������������� 153
Использование компонентов PrimeFaces в наших
приложениях JSF ������������������������������������������������������������������������� 156
Представления, снабженные вкладками ������������������������������������ 160
Интерфейсы мастера �������������������������������������������������������������������� 165
Дополнительная информация ���������������������������������������������������� 170
Резюме ������������������������������������������������������������������������������������������� 170
Стр.10
10
Содержание
6. Взаимодействие с базами данных через API
Персистентности Java
171
Создание нашей первой JPA-сущности ��������������������������������������� 172
Добавление к сущности сохраняемых полей ������������������������������� 179
Создание DAO ���������������������������������������������������������������������������� 180
Автоматизированная генерация JPA-сущностей ������������������������ 186
Именованные запросы и JPQL ���������������������������������������������������� 192
Проверка допустимости со стороны бинов ���������������������������������� 193
Отношения сущностей ����������������������������������������������������������������� 194
Генерация JSF-приложений из сущностей JPA �������������������������� 199
Резюме ������������������������������������������������������������������������������������������ 205
7. Реализация уровня бизнес-логики
на сеансовых бинах
206
Введение в Сеансовые бины �������������������������������������������������������� 206
Создание сеансового бина в NetBeans ����������������������������������������� 207
Доступ к бину из клиента ������������������������������������������������������������� 216
Выполнение клиента ������������������������������������������������������������������ 219
Транзакции, управляемые сеансовым бином ����������������������������� 219
Реализация аспектно-ориентированного
программирования с помощью перехватчиков �������������������������� 221
Реализация класса перехватчика ������������������������������������������������� 222
Декорирование EJB аннотацией @Interceptors ���������������������������� 223
Служба таймера EJB ������������������������������������������������������������������� 224
Генерация сеансовых бинов из JPA-сущностей ������������������������� 225
Резюме ������������������������������������������������������������������������������������������� 230
8. Контексты и Инжекция зависимости
231
Введение в CDI ���������������������������������������������������������������������������� 231
Квалификаторы ��������������������������������������������������������������������������� 238
Стереотипы ���������������������������������������������������������������������������������� 242
Типы привязки перехватчика ���������������������������������������������������� 245
Резюме ������������������������������������������������������������������������������������������� 248
Стр.11
11
9. Обмен сообщениями в JMS и Управляемых
сообщением бинах
249
Введение в JMS ���������������������������������������������������������������������������� 249
Создание проекта и ресурсов JMS ���������������������������������������������� 251
Создание пункта назначения JMS ������������������������������������������������ 252
Отправка сообщений пункту назначения ������������������������������������� 255
Обработка сообщений JMS с помощью управляемых
сообщением бинов ������������������������������������������������������������������������ 259
Резюме ������������������������������������������������������������������������������������������� 263
10. Веб-сервисы SOAP в JAX-WS
Введение в веб-сервисы ���������������������������������������������������������������� 264
Создание простого веб-сервиса ��������������������������������������������������� 265
Тестирование нашего веб-сервиса ���������������������������������������������� 270
Разработка клиента для нашего веб-сервиса ������������������������������� 272
Представление EJB в качестве веб-сервисов ������������������������������ 277
Реализация новых веб-сервисов в виде EJB ��������������������������������� 277
Представление существующего EJB в виде веб-сервисов ������������ 280
Создание веб-сервиса из существующего WSDL ������������������������ 282
Резюме ������������������������������������������������������������������������������������������ 284
11. RESTful веб-сервисы в JAX-RS
Создание RESTful веб-сервиса из существующей
базы данных ���������������������������������������������������������������������������������� 286
Анализ сгенерированного кода ��������������������������������������������������� 288
Тестирование нашего RESTful веб-сервиса �������������������������������� 292
Разработка клиента RESTful веб-сервиса ����������������������������������� 296
Резюме ������������������������������������������������������������������������������������������� 301
Приложение А. Отладка корпоративного
приложения отладчиком NetBeans
302
Отладка корпоративных приложений ���������������������������������������� 302
Резюме ������������������������������������������������������������������������������������������ 308
285
264
Стр.12
12
Содержание
Приложение Б. Выявление проблем
с производительностью при помощи
профилировщика NetBeans
Алфавитный указатель
309
Профилирование нашего приложения ��������������������������������������� 309
Резюме ������������������������������������������������������������������������������������������� 313
314
Стр.13