От издателя Третье издание "Enterprise JavaBeans" описывает технологию построения сложных ответственных систем, основанную на объединении компонентов, моделирующих прикладные объекты и процессы. EJB берет на себя заботу об объектном постоянстве, безопасности и управлении транзакциями. Еще недавно казалось невероятным, что компоненты EJB смогут не только выполняться в любой операционной системе без какой-либо модификации, но и работать на любом корпоративном сервере EJB. В EJB 2.0 введены компоненты, управляемые сообщениями, способные с помощью службы сообщений JMS взаимодействовать с системами промежуточного уровня; предложена более развитая модель управляемого контейнером постоянства и поддерживаются сложные отношения между объектными компонентами. В книге рассматриваются: EJB 2.0 и 1.1, сеансовые и объектные компоненты (включая новую модель СМР и язык запросов EJB QL), компоненты, управляемые сообщениями, и служба JMS, XML-дескрипторы развертывания, управление транзакциями и безопасность, взаимосвязь EJB и Java 2, Enterprise Edition. Опытные разработчики корпоративных программных продуктов знают, как сильно технология EJB изменила эту область. Данное третье издание поможет им освоить последние достижения. А для тех, кто не имеет опыта работы с EJB, автор подготовил стартовую площадку, с которой они могут начать изучение этой захватывающей технологии построения прикладных систем. Оглавление......Page 4 Заметки автора......Page 8 Что такое Enterprise JavaBeans?......Page 9 Для кого предназначена эта книга?......Page 10 Структура книги......Page 11 Программы и версии......Page 13 Соглашения......Page 14 Комментарии и вопросы......Page 15 Благодарности......Page 16 Глава 1. Введение......Page 18 Распределенные объекты......Page 19 Серверные компоненты......Page 20 Мониторы компонентных транзакций......Page 22 Определение Enterprise JavaBeans......Page 23 Архитектуры распределенных объектов......Page 24 Обкатка своего собственного объекта......Page 26 Модели компонентов......Page 31 Мониторы обработки транзакций......Page 32 Посредники объектных запросов......Page 33 CTM: гибрид ORB и TP-мониторов......Page 34 Сравнение с реляционными базами данных......Page 35 СТМ и модели серверных компонентов......Page 36 Среда .NET от Microsoft......Page 37 EJB и CORBA CTM......Page 38 Преимущества стандартной модели серверных компоне......Page 41 EJB 2.0: Асинхронные сообщения......Page 42 Круизы «Титан»: Вымышленный бизнес......Page 44 Что дальше?......Page 45 Глава 2. Обзор архитектуры......Page 46 Компонент Enterprise Bean......Page 47 Классы и интерфейсы......Page 48 Дескрипторы развертывания и файлы JAR......Page 58 Компонентный и внутренний объекты......Page 63 Получение информации из объектного компонента......Page 68 Моделирование рабочего потока с помощью сеансовых......Page 69 EJB 2.0: Доступ к компонентам с помощью компонент......Page 75 Соглашения между компонентом и контейнером......Page 76 Соглашения между контейнером и сервером......Page 78 Выводы......Page 80 Глава 3. Управление ресурсами и основные службы......Page 81 Пул экземпляров......Page 82 Механизм активации......Page 90 Параллелизм......Page 93 Транзакции......Page 99 Постоянство......Page 100 Распределенные объекты......Page 104 EJB 2.0: Корпоративная асинхронная система переда......Page 107 Система имен......Page 108 Безопасность......Page 110 EJB 2.0: Базовые службы и их взаимодействие......Page 120 Что дальше?......Page 121 Выбор и настройка сервера EJB......Page 122 Создание объектного компонента......Page 123 Cabin: Удаленный интерфейс......Page 124 CabinHome: Удаленный внутренний интерфейс......Page 125 CabinBean: Класс компонента......Page 126 Дескриптор развертывания......Page 131 cabin.jar: Файл JAR......Page 136 Создание таблицы CABIN в базе данных......Page 137 Развертывание компонента Cabin......Page 138 Создание клиентского приложения......Page 139 Разработка сеансового компонента......Page 145 TravelAgentHomeRemote: Удаленный внутренний интер......Page 147 TravelAgentBean: Класс компонента......Page 148 Дескриптор развертывания компонента TravelAgent......Page 151 Развертывание компонента TravelAgent......Page 153 Создание клиентского приложения......Page 154 Глава 5. Клиентское представление......Page 156 Поиск компонентов с помощью интерфейса JNDI......Page 157 Java RMI-IIOP......Page 159 Удаленный внутренний интерфейс......Page 167 Интерфейс EJBObject, дескриптор и первичный ключ......Page 175 EJB 2.0: Локальный клиентский интерфейс......Page 186 Локальный интерфейс......Page 187 Локальный внутренний интерфейс......Page 189 Применение локального клиентского интерфейса......Page 190 Когда применять локальные компонентные интерфейсы......Page 191 Действительно ли необходимы локальные компонентны......Page 193 Обзор......Page 195 Абстрактная программная модель......Page 198 Инструментальные средства контейнера и постоянств......Page 199 Компонент Customer......Page 200 Таблица Customer......Page 201 Класс CustomerBean......Page 202 Удаленный интерфейс......Page 205 Удаленный внутренний интерфейс......Page 206 XML-дескриптор развертывания......Page 208 Файл EJB JAR......Page 211 Клиентское приложение......Page 212 Поля постоянства......Page 213 Классы зависимых значений......Page 214 Поля отношений......Page 218 Глава 7. EJB 2.0 CMP: Отношения между объектами......Page 231 Семь типов отношений......Page 232 Абстрактная схема постоянства......Page 233 Моделирование базы данных......Page 237 Однонаправленное отношение «один-к-одному»......Page 238 Двунаправленное отношение «один-к-одному»......Page 242 Однонаправленное отношение «один-ко-многим»......Page 246 Компоненты Cruise, Ship и Reservation......Page 255 Однонаправленное отношение «многие-к-одному»......Page 256 Двунаправленное отношение «один-ко-многим»......Page 260 Двунаправленное отношение «многие-ко-многим»......Page 266 Однонаправленное отношение «многие-ко-многим»......Page 271 Каскадное удаление и метод Remove......Page 276 Глава 8. EJB 2.0 CMP: EJB QL......Page 280 Объявление EJB QL......Page 282 Поисковые методы......Page 283 Методы выборки......Page 286 Примеры EJB QL......Page 289 Простые запросы с путями......Page 290 Оператор IN......Page 294 Использование DISTINCT......Page 295 Секция WHERE и литералы......Page 296 Секция WHERE и входные параметры......Page 297 Секция WHERE и разделы CDATA......Page 298 Секция WHERE и арифметические операторы......Page 299 Секция WHERE и знаки сравнения......Page 300 Секция WHERE и семантика равенства......Page 301 Секция WHERE и IN......Page 302 Секция WHERE и IS EMPTY......Page 303 Секция WHERE и MEMBER OF......Page 304 Секция WHERE и LIKE......Page 305 Секция WHERE и функциональные выражения......Page 306 Отсутствие секции ORDER BY......Page 307 Ограниченная поддержка функциональных выражений......Page 309 Замечание для тех, кто работает с EJB 2.0......Page 310 Обзор для тех, кто работает с EJB 1.1......Page 311 Постоянство, управляемое контейнером......Page 312 Удаленный внутренний интерфейс......Page 314 Класс ShipBean......Page 317 Реализация интерфейса javax.ejb.EntityBean......Page 319 Конструирующие методы......Page 320 Дескриптор развертывания......Page 322 Глава 10. Постоянство, управляемое компонентом......Page 324 Удаленный интерфейс......Page 325 Методы Set и Get......Page 326 Удаленный внутренний интерфейс......Page 327 Класс ShipBean......Page 328 Установка связи с ресурсом......Page 333 Обработка исключений......Page 335 Метод ejbCreate()......Page 336 Методы ejbLoad() и ejbStore()......Page 338 Метод ejbRemove()......Page 341 Методы ejbFind()......Page 342 Дескриптор развертывания......Page 346 Первичный ключ......Page 348 Простые первичные ключи......Page 349 Составные первичные ключи......Page 350 Неопределенные первичные ключи......Page 354 Методы обратного вызова......Page 356 SetEntityContext() и unsetEntityContext()......Page 357 ejbCreate()......Page 358 ejbCreate () и ejbPostCreate(): Последовательност......Page 360 Использование ejbLoad() и ejbStore() в постоянств......Page 362 Использование ejbLoad() и ejbStore() в постоянств......Page 364 ejbPassivate() и ejbActivate()......Page 365 EJB 2.0: ejbHome()......Page 366 EntityContext......Page 368 EJBContext......Page 370 Жизненный цикл объектного компонента......Page 373 Состояние готовности......Page 375 Жизнь в состоянии готовности......Page 379 Окончание жизненного цикла......Page 381 Глава 12. Сеансовые компоненты......Page 382 Сеансовый компонент без состояния......Page 384 Компонент ProcessPayment......Page 386 PaymentException: Прикладное исключение......Page 390 Жизненный цикл сеансового компонента без состояни......Page 400 Пул готовых методов......Page 401 Сеансовый компонент с состоянием......Page 404 EJB 2.0: Подготовка к использованию TravelAgent......Page 405 EJB 1.1: Подготовка к использованию TravelAgent......Page 407 Компонент TravelAgent......Page 408 Жизненный цикл сеансового компонента с состоянием......Page 432 Состояние готовых методов......Page 433 Пассивное состояние......Page 434 Глава 13. Компоненты, управляемые сообщениями......Page 438 Новая реализация компонента TravelAgent с использ......Page 439 JMS – асинхронная система......Page 447 Модели передачи сообщений JMS: «издание-подписка»......Page 449 Объектные и сеансовые компоненты не должны приним......Page 452 Дополнительная информация о JMS......Page 453 Компоненты, управляемые сообщениями......Page 454 Компонент ReservationProcessor......Page 455 Жизненный цикл компонента, управляемого сообщения......Page 473 ACID-транзакции......Page 476 Является ли компонент TravelAgent атомарным?......Page 480 Является ли компонент TravelAgent согласованным?......Page 481 Является ли компонент TravelAgent устойчивым?......Page 482 Декларативное управление транзакциями......Page 483 Зона транзакции......Page 484 Атрибуты транзакций......Page 485 Распространение транзакций......Page 491 EJB 2.0: Основанные на коллекции отношения и тран......Page 494 Грязное, повторяющееся и фантомное чтение......Page 495 Блокировки баз данных......Page 499 Уровни изоляции транзакций......Page 500 Выбор между производительностью и согласованность......Page 501 Нетранзакционные компоненты......Page 503 Явное управление транзакциями......Page 504 Распространение транзакций в транзакциях, управля......Page 507 UserTransaction......Page 513 Состояние......Page 515 Методы отката EJBContext......Page 517 Сравнение прикладных и системных исключений......Page 518 Транзакционные сеансовые компоненты с состоянием......Page 529 Транзакционное состояние готовых методов......Page 530 Хеш-коды в составных первичных ключах......Page 532 Хорошо распределенные и уникальные хеш-коды......Page 533 EJB 1.1: Зависимые объекты......Page 534 Правила проверки корректности в зависимых объекта......Page 536 Методы пакетного доступа для удаленных клиентов......Page 538 Объекты с данными......Page 542 Сетевой трафик и время ожидания удаленных клиенто......Page 543 Поддержание равновесия при использовании удаленны......Page 544 Реализация списка......Page 545 Компонентные адаптеры......Page 549 Почему класс компонента не должен реализовывать у......Page 551 Альтернатива в EJB 1.1: Прикладной интерфейс......Page 554 EJB 1.1: Инструментальные средства отображения об......Page 556 Избегайте эмуляции объектных компонентов с помощь......Page 557 Прямой доступ к базам данных из сеансовых компоне......Page 558 Избегайте соединения сеансовых компонентов с сост......Page 560 Что такое XML-дескриптор развертывания?......Page 562 Содержимое дескриптора развертывания......Page 563 Тело дескриптора......Page 566 Описание компонентов......Page 568 Сеансовые компоненты и объектные компоненты......Page 570 Компоненты, управляемые сообщениями......Page 574 Определение первичных ключей......Page 575 Элементы окружения......Page 578 Ссылки на другие компоненты......Page 579 Ссылки на внешние ресурсы......Page 582 Роли безопасности......Page 585 Объявление элементов EJB QL......Page 586 EJB 2.0: Описание отношений......Page 588 Описание сборки компонента......Page 592 Задание атрибутов транзакции компонента......Page 593 Определение ролей безопасности и прав доступа к м......Page 595 Описание отдельных методов......Page 600 Файл ejb-jar......Page 603 Файл client-jar......Page 605 Глава 17. Java 2, Enterprise Edition......Page 606 Сервлеты......Page 607 JavaServer Pages......Page 608 Веб-компоненты и EJB......Page 609 J2EE заполняет пробелы......Page 610 Прикладные клиентские компоненты J2EE......Page 612 Обязательные службы......Page 613 Собираем все вместе......Page 615 Будущие расширения......Page 617 EJB 2.0: AccessLocalException......Page 618 EJBContext......Page 619 EJB 2.0: EJBLocalHome......Page 620 EJBObject......Page 621 FinderException......Page 622 EJB 2.0: MessageDrivenContext......Page 623 SessionBean......Page 624 EJB 2.0: TransactionRequiredLocalException......Page 625 HandleDelegate......Page 626 Приложение В. Диаграммы состояний и последовательностей......Page 628 Диаграмма состояний жизненного цикла объектного к......Page 629 Диаграммы последовательностей для постоянства, уп......Page 630 Диаграммы последовательностей для постоянства, уп......Page 632 Сеансовые компоненты без состояния......Page 635 Сеансовые компоненты с состоянием......Page 637 Компоненты, управляемые сообщениями......Page 641 Отношения между исключениями и транзакциями......Page 642 Коммерческие продукты......Page 647 Продукты с открытым кодом......Page 649 Алфавитный указатель......Page 650 E......Page 651 G......Page 653 J......Page 654 N......Page 655 R......Page 656 T......Page 657 А......Page 658 Д......Page 659 И......Page 660 К......Page 661 М......Page 662 О......Page 663 П......Page 664 Р......Page 666 С......Page 667 Т......Page 668 У......Page 669 Я......Page 670
This third edition explains the underlying technology, Java classes and interfaces, component model, and runtime behavior of Enterprise JavaBeans. In addition, the book contains an architecture overview, information on resource management and primary services, design strategies, and XML deployment descriptors.
Electronic Review of Computer Books - Gregory V. Wilson
Enterprise JavaBeans (EJBs) may be the clumsiest name that our industry has come up with recently -- but the technology is anything but. Enterprise JavaBeans combines distributed components with transaction monitors to produce an infrastructure that can manage database-style transactions, security, object persistence, and resource management in a standardized way. Enterprise JavaBeans has nothing in common with plain ol' JavaBeans except its name, and it is much more similar to the Microsoft Transaction Server (MTS).
Richard Monson-Haefel's Enterprise JavaBeans starts by describing the historical and technological background to EJB, including the development of transaction monitors over the last 30 years, and the underpinnings of distributed-object technology. Chapter 2 then looks at the EJB architecture, while Chapter 3 discusses resource management. As part of this discussion, Monson-Haefel looks at how EJB handles the six primary services defined by the OMG: concurrency, transactions, persistence, distributed objects, naming, and security. This discussion is informative, but noncritical -- the book never suggests that EJB has weaknesses, or that a different approach to some technical problem (or more rigorous standardization) might have been more flexible or easier to implement.
Chapter 4 describes how to implement some simple EJBs. As with other examples in the book, most of this material is taken from a system to manage bookings for a holiday cruise line. Chapters 5 through 8 then discuss how EJBs are used by client-size applications, the development of entity beans (that is, components that describe real-world objects such as cruise ships), session beans (which describe business logic such as the booking of a cruise) and EJB's support for transaction management. The last chapter, "Design Strategies," then gives some tips on how to go about developing EJB-based applications. The book closes with three appendices: One on the EJB API, one (which I found very helpful) that gives UML state and sequence diagrams for various operations, and one (which is already out of date) that provides information about EJB vendors.
Enterprise JavaBeans is well written, and well edited: I did not notice any awkward sentences, typographical errors, or ugly diagrams. In addition, Monson-Haefel's examples are easy to follow. His discussion of technical issues is clear, but would have been better, in my opinion, if it had been a little more critical, or if it made more comparisons between EJB and other systems. (One of the things that makes Szyperski's Component Software such an excellent book is the way its author does precisely these things.) Overall, Enterprise JavaBeans is a good starting point for anyone who is interested in the subject, and a reasonable reference for anyone who is already in the middle of an EJB project.
Enterprise JavaBeans was recently voted "Best Java Book" by the editors and readers of Java Developer's Journal. Readers of JavaPro named it the "Best Java Book for Experts." And Amazon.com included it in the Top Computer Books for 2000. Now the best only gets better! In the new 3rd edition, Enterprise JavaBeans has been completely revised and updated with a thorough introduction to the new 2.0 version of the EJB specification. Significantly different from the earlier version, the 2.0 specification introduces three dramatic improvements: A completely new version of container-managed persistence; local interfaces; and a totally new kind of bean called the "message driven bean." The new version of container-managed persistence (CMP) beans in 2.0 is more portable and robust than in the older 1.1 version. Most significant is the introduction of the relationship fields, which allow entity beans to declare relationships with each other as natural references. In order to make this huge leap in component relationships possible, EJB 2.0 had to redesign how entity beans are defined and interact. Our new 3rd edition examines this critical CMP model in detail. Local interfaces are thoroughly discussed as well. Local interfaces allow beans that are co-located to interact without the overhead of remote method calls. This improves the performance of beans considerably and complements the CMP relationship fields. Message driven beans are a new kind of enterprise bean based on asynchronous messaging and the Java Message service (JMS). Instead of responding to Java RMI calls, message driven beans process JMS messages sent by messaging clients. An entire chapter is devoted to message-driven beans and how to use them effectively. In addition, the 3rd edition contains an architecture overview, information on resource management and primary services, design strategies, and XML deployment descriptors