Java Enterprise Edition (Java EE) остается одной из ведущих технологий и платформ на основе Java. Данная книга представляет собой логичное пошаговое руководство, в котором подробно описаны многие спецификации и эталонные реализации Java ЕЕ 7. Работа с ними продемонстрирована на практических примерах. В этом фундаментальном издании также используется новейшая версия инструмента GlassFish, предназначенного для развертывания и администрирования примеров кода. Книга написана ведущим специалистом по обработке запросов на спецификацию Java ЕЕ, членом наблюдательного совета организации Java Community Process (JCP). В ней вы найдете максимально ценную информацию, изложенную с точки зрения эксперта по технологиям Java для предприятий.
Благодаря этой книге вы познакомитесь с новейшей версией платформы Java ЕЕ исследуете и научитесь использовать API EJB и JPA — от компонентов-сущностей, компонентов-сеансов до компонентов, управляемых сообщениями, и многого другого откроете для себя API для разработки на веб-уровне, в частности JSF, Facelet и Expression Language научитесь обращаться с веб-службами SOAP и RESTful, а также с другими службами, доступными в новейшей версии Java ЕЕ узнаете, как создавать динамические пользовательские интерфейсы для корпоративных и транзакционных Java-приложений.
Author(s): Гонсалвес Э.
Publisher: Питер
Year: 2014
Language: Russian
Pages: 640
Tags: Библиотека;Компьютерная литература;Java;
Предисловие......Page 15
Об авторе......Page 16
О техническом редакторе......Page 17
Благодарности......Page 18
Введение......Page 19
Структура книги......Page 20
От издательства......Page 21
Понимание Java EE......Page 22
Архитектура......Page 23
Компоненты......Page 24
Контейнеры......Page 25
Сервисы......Page 26
Сетевые протоколы......Page 27
Упаковка......Page 28
Аннотации и дескрипторы развертывания......Page 30
Стандарты......Page 32
Портируемость......Page 33
Модель программирования......Page 34
Java Standard Edition 7......Page 35
Ромбовидная нотация......Page 36
Конструкция try-with-resources......Page 37
NIO.2......Page 38
Краткая история Java EE......Page 39
Отсечение......Page 41
Спецификации Java EE 7......Page 42
Спецификации веб-профиля 7......Page 45
Приложение CD-BookStore......Page 46
Резюме......Page 47
Понятие компонентов......Page 49
Внедрение зависимостей......Page 50
Управление жизненным циклом......Page 51
Перехват......Page 52
Дескриптор развертывания......Page 53
Краткая история спецификаций CDI......Page 54
Создание компонента CDI......Page 55
Внедрение зависимостей......Page 56
Альтернативы......Page 64
Производители данных......Page 65
Утилизаторы......Page 68
Области видимости......Page 69
Перехватчики......Page 73
Перехватчики целевого класса......Page 74
Перехватчики классов......Page 76
Перехватчик жизненного цикла......Page 78
Связывание с перехватчиком......Page 80
Приоретизация связывания перехватчиков......Page 82
Декораторы......Page 83
События......Page 84
Все вместе......Page 87
Написание классов Book и BookService......Page 88
Написание классов NumberGenerator......Page 89
Написание автоматического журнала......Page 90
Написание класса Main......Page 91
Компиляция и выполнение с помощью Maven......Page 92
Написание класса BookServiceIT......Page 94
Запуск интеграционного теста......Page 95
Резюме......Page 96
Понятие об ограничениях и валидации......Page 97
Приложение......Page 98
Клиент......Page 99
Обзор спецификации валидации компонентов......Page 100
Что нового появилось в версии Bean Validation 1.1......Page 101
Написание ограничений......Page 102
Внутренняя организация ограничения......Page 103
Встроенные ограничения......Page 106
Определение собственных ограничений......Page 107
Сообщения......Page 115
Контекст ConstraintValidator......Page 117
Группы......Page 119
Дескрипторы развертывания......Page 120
Валидация ограничений......Page 121
Валидационные API......Page 122
Валидация компонентов......Page 125
Валидация значений......Page 126
Валидация групп......Page 127
Все вместе......Page 128
Написание компонента Address......Page 130
Написание ограничения @ZipCode......Page 131
Написание интеграционных тестов CustomerIT и AddressIT......Page 133
Компиляция и тестирование в Maven......Page 134
Резюме......Page 136
Глава 4. Java Persistence API......Page 137
Понятие сущностей......Page 138
Анатомия сущности......Page 139
Объектно-реляционное отображение......Page 140
Выполнение запросов к сущностям......Page 143
Жизненный цикл сущности и обратные вызовы......Page 146
Обзор спецификации JPA......Page 148
Краткая история JPA......Page 149
Эталонная реализация......Page 150
Все вместе......Page 151
Написание класса Main......Page 152
Написание интеграционного теста BookIT......Page 153
Написание единицы сохраняемости......Page 155
Написание SQL-сценария для загрузки данных......Page 156
Компиляция и тестирование с использованием Maven......Page 157
Применение класса Main с использованием Maven......Page 160
Проверка сгенерированной схемы......Page 161
Резюме......Page 162
Элементарное отображение......Page 163
Таблицы......Page 164
Первичные ключи......Page 166
Тип доступа......Page 177
Коллекции базовых типов......Page 180
Отображение базовых типов......Page 181
Отображение с использованием XML......Page 183
Встраиваемые объекты......Page 186
Отображение связей......Page 189
Связи в реляционных базах данных......Page 191
Связи между сущностями......Page 192
Выборка связей......Page 203
Упорядочение связей......Page 205
Стратегии наследования......Page 208
Типы классов в иерархии наследования......Page 217
Резюме......Page 221
Глава 6. Управление постоянными объектами......Page 222
Менеджер сущностей......Page 223
Получение менеджера сущностей......Page 225
Контекст постоянства......Page 227
Манипулирование сущностями......Page 230
JPQL......Page 240
SELECT......Page 242
WHERE......Page 244
ORDER BY......Page 245
Массовое удаление......Page 246
Запросы......Page 247
Динамические запросы......Page 250
Именованные запросы......Page 252
Criteria API (или объектно-ориентированные запросы)......Page 254
«Родные» запросы......Page 257
Запросы к хранимым процедурам......Page 258
Cache API......Page 261
Конкурентный доступ......Page 264
Контроль версий......Page 266
Оптимистическая блокировка......Page 267
Пессимистическая блокировка......Page 269
Жизненный цикл сущности......Page 270
Обратные вызовы......Page 272
Слушатели......Page 275
Резюме......Page 279
Глава 7. Корпоративные EJB-компоненты......Page 281
Понятие корпоративных EJB-компонентов......Page 282
Типы EJB-компонентов......Page 283
Процесс и встроенный контейнер......Page 284
Службы, обеспечиваемые контейнером......Page 285
EJB Lite......Page 286
Обзор спецификации EJB......Page 287
Краткая история спецификации EJB......Page 288
Что нового в EJB 3.2?......Page 289
Написание корпоративных EJB-компонентов......Page 290
Анатомия EJB-компонента......Page 291
Удаленные и локальные представления, а также представление без интерфейса......Page 292
Интерфейсы веб-служб......Page 295
Переносимое JNDI-имя......Page 296
EJB-компоненты без сохранения состояния......Page 297
EJB-компоненты с сохранением состояния......Page 301
Одиночные EJB-компоненты......Page 304
Объединение одиночных EJB-компонентов в цепочку......Page 306
Конкурентный доступ......Page 307
Конкурентный доступ, управляемый контейнером......Page 308
Конкурентный доступ, управляемый EJB-компонентом......Page 309
Время ожидания конкурентного доступа и запрет конкурентного доступа......Page 310
Внедрение зависимостей......Page 311
API-интерфейс SessionContext......Page 312
Асинхронные вызовы......Page 313
Дескриптор развертывания......Page 315
Контекст именования среды......Page 317
Упаковка......Page 318
Развертывание EJB-компонента......Page 319
Вызов с использованием внедрения......Page 321
Вызов с использованием CDI......Page 322
Вызов с использованием JNDI......Page 323
Резюме......Page 324
Жизненный цикл сеансовых компонентов......Page 325
Компоненты, не сохраняющие состояния, и синглтоны......Page 326
Компоненты, хранящие состояние......Page 327
Методы обратного вызова......Page 329
Служба таймера......Page 332
Выражения на основе календаря......Page 333
Декларативное создание таймера......Page 335
Программное создание таймера......Page 336
Декларативная авторизация......Page 338
Программная авторизация......Page 341
Написание сущности Entity......Page 343
Написание сеансового компонента BookEJB, не сохраняющего состояние......Page 345
Написание CDI DatabaseProducer......Page 346
Блок хранения для BookEJB......Page 347
Написание DatabasePopulator и определение источника данных......Page 348
Написание интеграционного теста BookEJBIT......Page 349
Компиляция, тестирование и упаковка с помощью Maven......Page 351
Написание класса Main......Page 353
Резюме......Page 354
Понимание транзакций......Page 355
Условия считывания......Page 356
Локальные транзакции JTA......Page 357
Распределенные транзакции и XA......Page 358
Обзор спецификаций для работы с транзакциями......Page 360
Что нового в версии 1.2 JTA?......Page 361
Поддержка транзакций в EJB......Page 362
Маркировка CMT для отката транзакции......Page 366
Исключения и транзакции......Page 367
Поддержка транзакций в Managed Beans......Page 371
Резюме......Page 373
Концепция веб-страниц......Page 374
HTML......Page 375
XHTML......Page 377
CSS......Page 378
JavaScript......Page 381
Концепция JSF......Page 384
Страницы и компоненты......Page 385
Преобразователи и валидаторы......Page 387
Компоненты-подложки и навигация......Page 388
Язык выражений......Page 389
Краткая история веб-интерфейсов......Page 390
Краткая история JSF......Page 391
Что нового в JSF 2.2?......Page 392
Структура страницы JSF......Page 393
Body......Page 395
Жизненный цикл......Page 398
HTML-компоненты JSF......Page 400
Команды......Page 401
Компоненты ввода......Page 402
Компоненты вывода......Page 403
Компоненты выбора......Page 404
Сетка и таблицы......Page 406
Сообщения об ошибках......Page 407
Разное......Page 408
Основные теги JSF......Page 409
Теги шаблонов JSF......Page 410
Теги JSTL......Page 412
Основные действия......Page 413
Действия форматирования......Page 414
Управление ресурсами......Page 416
Неявные объекты......Page 417
Составные компоненты......Page 419
Резюме......Page 424
Шаблон MVC......Page 425
FacesServlet......Page 426
FacesContext......Page 429
Faces-config.xml......Page 430
Создание компонентов-подложек......Page 431
Структура компонентов-подложек......Page 432
Области действия......Page 434
Жизненный цикл и аннотации функций обратного вызова......Page 435
Обработка исключений и сообщений......Page 436
Навигация......Page 439
Явная навигация......Page 440
Правила навигации......Page 441
Добавление страниц в закладки......Page 443
Преобразование и проверка......Page 444
Преобразователи......Page 445
Пользовательские преобразователи......Page 447
Валидаторы......Page 449
Пользовательские валидаторы......Page 450
AJAX......Page 451
Общие понятия......Page 452
Поддержка в JSF......Page 453
Все вместе......Page 455
Написание сущности Book......Page 457
Написание компонента-подложки BookController......Page 458
Написание шаблона layout.xhtml......Page 459
Написание страницы newBook.xhtml......Page 460
Написание страницы viewBook.xhtml......Page 462
Компиляция и упаковка с помощью Maven......Page 463
Развертывание на GlassFish......Page 464
Запуск примера......Page 465
Резюме......Page 466
Основные сведения об XML......Page 467
XML-документ......Page 468
Проверка схемы XML......Page 469
SAX......Page 472
Преобразование с помощью XSLT......Page 473
Краткая история XML-спецификаций......Page 475
Спецификации XML в Java......Page 476
Архитектура Java для обработки XML......Page 477
Конфигурирование JAXP......Page 478
JAXP и SAX......Page 479
JAXP и DOM......Page 482
JAXP и XSLT......Page 483
Архитектура Java для связывания XML......Page 484
Связывание......Page 486
Аннотации......Page 487
Основные сведения о JSON......Page 490
Обзор спецификаций JSON......Page 492
Обработка JSON......Page 493
Построение JSON......Page 494
Анализ JSON......Page 495
Генерация JSON......Page 497
Все вместе......Page 498
Написание теста CreditCardXMLTest......Page 499
Написание теста CreditCardJSonTest......Page 500
Резюме......Page 501
Основные сведения об обмене сообщениями......Page 502
От точки к точке......Page 504
Публикация-подписка......Page 505
Компоненты, управляемые сообщениями......Page 506
Краткая история обмена сообщениями......Page 507
Примеры реализации......Page 508
Java Messaging Service API......Page 509
ConnectionFactory......Page 510
Соединение......Page 511
Заголовок......Page 512
Отправка и получение сообщений с помощью классического API......Page 514
Упрощенный API......Page 516
JMSContext......Page 517
JMSConsumer......Page 519
Производство сообщения вне контейнера......Page 520
Производство сообщения внутри контейнера......Page 521
Производство сообщений внутри контейнера с помощью CDI......Page 522
Синхронная доставка......Page 523
Асинхронная доставка......Page 525
Механизмы надежности......Page 526
Настройка параметров времени существования сообщений......Page 527
Управление подтверждением......Page 528
Написание компонентов, управляемых сообщениями......Page 529
Структура MDB......Page 530
@MessageDriven......Page 531
@ActivationConfigProperty......Page 532
Контекст MDB......Page 533
Жизненный цикл и аннотации функций обратного вызова......Page 534
MDB как производитель сообщений......Page 535
Транзакции......Page 536
Обработка исключений......Page 537
Написание класса OrderDTO......Page 538
Написание класса OrderProducer......Page 539
Написание класса ExpensiveOrderMDB......Page 540
Компиляция и упаковка с помощью Maven......Page 541
Создание администрируемых объектов......Page 542
Выполнение примера......Page 543
Резюме......Page 544
Глава 14. Веб-службы SOAP......Page 545
Основные сведения о веб-службах SOAP......Page 546
WSDL......Page 547
SOAP......Page 550
UDDI......Page 551
Краткая история спецификаций веб-служб SOAP......Page 552
Спецификации, связанные с веб-службами SOAP......Page 553
Web Services 1.3......Page 554
Создание веб-служб SOAP......Page 555
Структура веб-службы SOAP......Page 557
Преобразование WSDL......Page 558
@WebService......Page 559
@WebMethod......Page 560
@WebResult......Page 561
@SoapBinding......Page 562
Собираем все преобразования воедино......Page 564
Обработка исключений......Page 567
WebServiceContext......Page 570
Дескриптор развертывания......Page 571
Публикация веб-служб SOAP......Page 572
Вызов веб-служб SOAP......Page 573
Программный вызов......Page 574
Вызов с помощью внедрения......Page 575
Вызов с помощью CDI......Page 576
Написание класса CreditCard......Page 577
Написание модульного теста CardValidatorTest......Page 579
Написание интеграционного теста CardValidatorIT......Page 580
Компиляция, тестирование и упаковка с помощью Maven......Page 581
Развертывание на GlassFish......Page 583
Написание класса WebServiceConsumer......Page 584
Создание артефактов потребителя и упаковка с помощью Maven......Page 585
Резюме......Page 588
Глава 15. Веб-службы в стиле REST......Page 589
Ресурсы и URI......Page 590
Адресуемость......Page 592
Связность......Page 593
Отсутствие сохранения состояния......Page 594
HTTP......Page 595
WADL......Page 602
Краткая история REST......Page 603
Что нового в JAX-RS 2.0?......Page 604
Написание веб-служб с передачей состояния представления......Page 605
Выполнение операций CRUD над веб-службами в стиле REST......Page 606
Определение URI и URI связывания......Page 608
Извлечение параметров......Page 609
Использование и создание типов содержимого......Page 611
Возвращаемые типы......Page 613
Сопоставление HTTP-методов......Page 615
Контекстная информация......Page 617
Поставщик объектов......Page 619
Обработка исключений......Page 621
Упаковка......Page 623
Клиентский API......Page 624
Структура потребителя REST......Page 627
Написание сущности Book......Page 628
Написание JAXB-компонента Books......Page 629
Написание службы BookRestService......Page 630
Конфигурирование JAX-RS......Page 634
Компиляция и упаковка с помощью Maven......Page 635
WADL......Page 637
Написание интеграционного теста BookRestServiceIT......Page 638
Резюме......Page 639