Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Руководство программиста Enterprise JavaBeans

.pdf
Скачиваний:
37
Добавлен:
24.05.2014
Размер:
1.45 Mб
Скачать

Руководство

программиста Enterprise JavaBeans

V E R S I O N 4 . 0

Inprise Application Server

 

 

 

Inprise Corporation, 100 Enterprise Way

Scotts Valley, CA 95066-3249

Inprise may have patents and/or pending patent applications covering subject matter in this document. The furnishing of this document does not give you any license to these patents.

COPYRIGHT © 1999 Inprise Corporation. All rights reserved. All Inprise and Borland brands and product names are trademarks or registered trademarks of Inprise Corporation. Java and all Java-based marks are trademarks or registered trademarks in the United States and other countries. Other brands and product names are trademarks or registered trademarks of their respective owners.

Printed in the U.S.A.

ASE0040WW21000 2E3R1299 9900010203-9 8 7 6 5 4 3 2 1 PDF

Ð ó ê î â î ä ñ ò â î

Ï ð î ã ð à ì ì è ñ ò à

E n t e r p r i s e

J a v a B e a n s

Содержание

Глава 1

Предисловие

1-1

Структура данного руководства . . . . . . .

. 1-1

Какие разделы предназначены

 

äëÿ âàñ? . . . . . . . . . . . . . . . . . . . . . . .

. 1-2

Типографские соглашения . . . . . . . . . . .

. 1-2

Соглашения о платформах . . . . . . . . . . .

. 1-3

Где найти дополнительную

 

информацию . . . . . . . . . . . . . . . . . . . . .

1-3

Информация по EJB . . . . . . . . . . . . . .

1-3

Информация по CORBA . . . . . . . . . . .

1-4

Поддержка пользователей

 

продуктов Inprise . . . . . . . . . . . . . . .

1-4

О терминологии . . . . . . . . . . . . . . . . . . .

1-5

Глава 2

Обзор

2-1

Архитектура Enterprise JavaBeans . . . . . . . 2-1 Компоненты Enterprise bean . . . . . . . . 2-2 Session-компоненты . . . . . . . . . . . . 2-3 Entity-компоненты . . . . . . . . . . . . . 2-4 Роли EJB . . . . . . . . . . . . . . . . . . . . . . 2-4

Роли обеспечения инфраструктуры . . . . . . . . . . . . . 2-5

Роли разработки приложений . . . . 2-5 Роли поставки и настройки . . . . . . 2-5

Структурные шаблоны (design patterns)

и соглашения об именах в EJB . . . . . . 2-6 Инфраструктура

Enterprise JavaBean . . . . . . . . . . . . . . . 2-7 Контейнер . . . . . . . . . . . . . . . . . . . . . 2-8

Зачем использовать реализацию Inprise Контейнера EJB? . . . . . . . . . . . . . . . . . . . 2-9

Полнофункциональная и гибкая

EJB run-time среда . . . . . . . . . . . . . . 2-10 Контейнер EJB Inprise построен поверх VisiBroker и RMI-IIOP . . . . . . . . . . . 2-10 Inprise EJB Container -

это объект CORBA . . . . . . . . . . . . . 2-11 Поддержка для различных видов Компонентов . . . . . . . . . . . . . . . . . 2-11 Поддержка поставки . . . . . . . . . . . . 2-12 Менеджер транзакций . . . . . . . . . . . 2-12 Пул JDBC-соединений и интеграция с транзакциями . . . . . . . . . . . . . . . . . 2-12 Служба имен (Naming service) . . . . . . 2-13

Обеспечение безопасности . . . . . . . . . 2-13 Базы Данных на Java . . . . . . . . . . . . . 2-13 Container-managed persistence (CMP) для Entity-Компонентов . . . . . . . . . . . . . 2-13 Интеграция с другими элементами . . 2-13

Глава 3

Первые шаги

3-1

Начало. Изучение примеров . . . . . . . . . . 3-1 Обзор примеров . . . . . . . . . . . . . . . . . 3-1 Построение примеров . . . . . . . . . . . . . 3-2 Makefile . . . . . . . . . . . . . . . . . . . . . 3-3 Запуск примеров . . . . . . . . . . . . . . . . 3-4 Режим отладки . . . . . . . . . . . . . . . 3-5 Исключение NotFound . . . . . . . . . . 3-5

Основы Контейнера EJB и

инструментальных средств . . . . . . . . . . . 3-6 Запуск Контейнера EJB . . . . . . . . . . . . 3-6 Опции . . . . . . . . . . . . . . . . . . . . . 3-6

Концепции EJB-Сервера и

EJB-Контейнера . . . . . . . . . . . . . . . . . 3-7 Флаги диагностики . . . . . . . . . . . . . . . 3-8

Использование флагов

VisiBroker . . . . . . . . . . . . . . . . . . 3-8 Инструменты EJB . . . . . . . . . . . . . . . . 3-9

Пример создания приложения

с stateless Session-компонентом . . . . . . . 3-10 Написание Компонента . . . . . . . . . . . 3-11 Написание интерфейса home . . . . 3-12 Написание remote-интерфейса . . . 3-13

Написание реализации Компонента . . . . . . . . . . . . . . . . 3-13

Написание кода клиента . . . . . . . . . . 3-15 Построение Компонента и клиентского приложения . . . . . . . . . . . . . . . . . . 3-16 Создание Дескриптора Поставки . . . . 3-17 Запуск примера Sort . . . . . . . . . . . . . 3-17

Глава 4

Разработка

 

Компонентов EJB

4-1

Разработка Компонента EJB:

Первые шаги . . . . . . . . . . . . . . . . . . . . . 4-1 Использование JBuilder . . . . . . . . . . . . . . . 4-2 Использование других средств разработки . . . . . . . . . . . . . . . . . . . . . . . 4-2

i

Разработка Компонента EJB . . . . . . . . . . .

4-3

Наследование классов

 

Компонента EJB. . . . . . . . . . . . . . . . .

4-4

Интерфейс Remote . . . . . . . . . . . . . . .

4-5

Базовый класс EJBObject . . . . . . . . .

4-5

Требования к методам . . . . . . . . . .

4-6

Интерфейс Home . . . . . . . . . . . . . . . .

4-6

Базовый класс EJBHome . . . . . . . . .

4-7

Home-интерфейс

 

Session-Компонента EJB. . . . . . . . .

4-8

Home-интерфейс

 

Entity-Компонента EJB . . . . . . . . .

4-9

Реализация Компонента EJB . . . . . . .

4-11

Интерфейс EnterpriseBean . . . . . .

4-11

Идентификаторы (Handles) . . . . . . . .

4-12

Ограничения при

 

программировании . . . . . . . . . . . . . . . .

4-12

Глава 5

Написание клиентского

 

приложения

5-1

Компонент EJB с точки

зрения клиента . . . . . . . . . . . . . . . . . . . 5-1 Инициализация клиента . . . . . . . . . . . 5-2 Поиск home-интерфейса . . . . . . . . . . . 5-2 Получение remote-интерфейса . . . . . . . 5-3 Session-Компоненты . . . . . . . . . . . . 5-3 Entity-Компоненты . . . . . . . . . . . . 5-4

Методы поиска и класс ключа компонента . . . . . . . . . . . . 5-5 Методы создания и

удаления экземпляра . . . . . . . . . . 5-5 Вызов методов . . . . . . . . . . . . . . . . . . 5-6 Удаление экземпляров Компонента . . . . . . . . . . . . . . . . . . . 5-7 Использование идентификаторов

Компонентов . . . . . . . . . . . . . . . . . . 5-7 Управление транзакциями . . . . . . . . . . . . 5-9 Получение информации о

Компоненте EJB . . . . . . . . . . . . . . . . . . 5-10 Поддержка JNDI . . . . . . . . . . . . . . . . . . 5-10 Отображение EJB на CORBA . . . . . . . . . . 5-11

Отображение аспектов удаленного взаимодействия . . . . . . . . . . . . . . . . 5-12 Отображение имен . . . . . . . . . . . . . . 5-13 Отображение транзакций . . . . . . . . . 5-14 Отображение средств обеспечения безопасности . . . . . . . . . . . . . . . . . . 5-15

Глава 6

Написание

 

Session-Компонента

6-1

Обзор Session-Компонентов . . . . . . . . . .

. 6-1

Цикл жизни stateful

 

session-Компонента . . . . . . . . . . . . . . . . .

6-2

Цикл жизни stateless

 

session-Компонента . . . . . . . . . . . . . . . . .

6-4

Разработка Session-Компонента . . . . . . . . .

6-5

Интерфейс SessionBean . . . . . . . . . . . .

6-5

Session-интерфейс

 

синхронизации . . . . . . . . . . . . . . . . .

6-6

Реализация session-Компонента . . . . . .

6-7

Пример cart . . . . . . . . . . . . . . . . . . . . . .

6-9

Session stateful-Компонент . . . . . . . . . .

6-9

Файлы примера cart . . . . . . . . . . . . .

6-10

Home-интерфейс

 

Компонета cart . . . . . . . . . . . . . . .

6-11

Remote-интерфейс Cart . . . . . . . . . . .

6-12

Компонент CartBean . . . . . . . . . . . . .

6-13

Обязательные методы . . . . . . . . .

6-14

Бизнес-методы . . . . . . . . . . . . . . .

6-16

Класс Item . . . . . . . . . . . . . . . . . . . .

6-18

Исключения . . . . . . . . . . . . . . . . . . .

6-19

XML-файл Дескриптора

 

Поставки . . . . . . . . . . . . . . . . . . . .

6-20

CartClient.java . . . . . . . . . . . . . . . . .

6-21

Глава 7

Написание

Entity-Компонента 7-1

Обзор Entity-Компонента . . . . . . . . . . . . . 7-1 Управление сохранением состояния . . . . . . . . . . . . . . . . . . . . . . . 7-2

Сохранение, управляемое Компонентом . . . . . . . . . . . . . . . . . . 7-3 Сохранение, управляемое

Контейнером . . . . . . . . . . . . . . . . . . 7-3 Этапы цикла жизни

Entity-Компонента . . . . . . . . . . . . . . . . . 7-4 Реализация Entity-Компонента . . . . . . . . . 7-7 Класс Entity-Компонента . . . . . . . . . . . 7-7 Методы Entity-Компонента . . . . . . . . . 7-9

Методы для создания

(create-методы) . . . . . . . . . . . . . . . 7-9 Методы поиска (finder-методы) . . 7-10 Бизнес-логика . . . . . . . . . . . . . . . 7-11 Синхронизация методов . . . . . . . . . . 7-11

Одновременный доступ к Entity-Компонентам . . . . . . . . . . 7-12

Ð ó ê î â î ä ñ ò â î

Ï ð î ã ð à ì ì è ñ ò à

ii

J a v a B e a n s

E n t e r p r i s e

Реентерабельные

 

Entity-Компоненты . . . . . . . . . . .

7-12

Главные ключи

 

Entity-Компонента . . . . . . . . . . . . . .

7-12

Управление транзакциями с

 

оптимистичной схемой

 

блокировок . . . . . . . . . . . . . . . . . . . . .

7-13

Пример использования

 

Entity-Компонента Bank . . . . . . . . . . . .

7-14

Home-интерфейс

 

Entity-Компонента . . . . . . . . . . . . . .

7-15

Remote-интерфейс

 

Entity-Компонента . . . . . . . . . . . . . .

7-16

Entity-Компонент с CMP . . . . . . . . . .

7-16

Entity-Компонент с BMP . . . . . . . . . .

7-18

Дескриптор Поставки

 

Entity-Компонента . . . . . . . . . . . . . .

7-23

Использование секции

 

datasource . . . . . . . . . . . . . . . . . .

7-26

Поставка Компонентов для

 

примера bank . . . . . . . . . . . . . . . . .

7-26

Использование режима отладки . . . .

7-27

Пример использования Oracle . . . . . .

7-27

Более сложные вопросы

 

использования CMP . . . . . . . . . . . .

7-28

Объектная модель взаимодействия

 

реляционных таблиц . . . . . . . . . . .

7-29

Реализация отношения

 

один-к-одному . . . . . . . . . . . . . .

7-30

Реализация отношения

 

один-ко-многим . . . . . . . . . . . . .

7-32

Объектное представление

 

реляционных соотношений с

 

точки зрения клиента . . . . . . . .

7-35

Соотношения между

 

типами Java и SQL . . . . . . . . . . . . .

7-35

Глава 8

Управление транзакциями 8-1

Что такое транзакция . . . . . . . . . . . . . . . 8-1 Характеристики транзакций . . . . . . . . 8-2 Поддержка транзакций . . . . . . . . . . . 8-3 Сервисы менеджера транзакции . . . . . . . . 8-3 Компоненты EJB и транзакции . . . . . . . . 8-4

Основы транзакций, управляемых Компонентом или Контейнером . . . . 8-5 Атрибуты транзакции . . . . . . . . . . . . 8-5 Локальные и глобальные транзакции . . . . . . . . . . . . . . . . . . . . 8-7

Использование API транзакций . . . . . . . . 8-7 Управление исключениями . . . . . . . . . . . 8-8 Системные исключения . . . . . . . . . . . 8-9

Исключения, специфические для приложения . . . . . . . . . . . . . . . . . . . 8-9 Обработка исключений приложения . . . . . . . . . . . . . . . . . . 8-10

Откат транзакции . . . . . . . . . . . . 8-10 Возможности для продолжения транзакции . . . . . . . . . . . . . . . . 8-11

Поддержка JDBC . . . . . . . . . . . . . . . . . . 8-11 Задание DataSource . . . . . . . . . . . . . . 8-12 Управление соединениями с базой данных и пулами . . . . . . . . . . . . . . 8-13

Уровни изоляции транзакции . . . . . . 8-15 Распределенные транзакции . . . . . . . . . . 8-16 Двухфазное подтверждение . . . . . . . . 8-16

Глава 9

Поставка Компонентов EJB 9-1

Поставка Компонентов EJB:

первые шаги . . . . . . . . . . . . . . . . . . . . . 9-1 Создание файла Дескриптора Поставки . . . . . . . . . . . . . . 9-2

Роль Дескриптора Поставки . . . . . . . . 9-3 Типы информации в Дескрипторе Поставки . . . . . . . . . . . 9-3

Информация о структуре . . . . . . . 9-4 Информация для сборки Приложений . . . . . . . . . . . . . . . . 9-4

Безопасность . . . . . . . . . . . . . . . . . 9-5 Роли безопасности . . . . . . . . . . . . . 9-5 Права доступа к методу . . . . . . . . 9-5 Связи между ссылками на роли безопасности и самими ролями . . . . . . . . . . . . . . . . . . . . 9-5

Специфическая для Inprise-реализации информация, необходимая для поставки Компонента . . . . . . . . . . . . . . . . . . . . 9-6

Информация о Компоненте . . . . . . 9-7 Пример элементов

session-Компонента . . . . . . . . . . . . 9-8 Пример entity-Компонента

с CMP . . . . . . . . . . . . . . . . . . . . . 9-9 Источники данных

(DataSource) . . . . . . . . . . . . . . . . . 9-9 Уровни изоляции транзакций . . . 9-10

Задание свойств среды

исполнения EJB . . . . . . . . . . . . . . . . . . 9-11 Создание EJB jar-файла . . . . . . . . . . . . . 9-12 Содержимое EJB jar-файла . . . . . . 9-12

Установка EJB jar-файла в

Контейнер . . . . . . . . . . . . . . . . . . . . . . 9-12 Синтаксис . . . . . . . . . . . . . . . . . . 9-13 Пример . . . . . . . . . . . . . . . . . . . 9-13

iii

Глава 10

Инструментальные

 

средства EJB

10-1

java2iiop . . . . . . . . . . . . . . . . . . . . . . .

. 10-1

Когда его использовать? . . . . . . . . .

. 10-1

Синтаксис . . . . . . . . . . . . . . . . . . .

. 10-2

Опции . . . . . . . . . . . . . . . . . . . . . .

. 10-2

Verify . . . . . . . . . . . . . . . . . . . . . . . . .

. 10-2

Когда это использовать? . . . . . . . . .

. 10-3

Синтаксис . . . . . . . . . . . . . . . . . . .

. 10-3

Опции . . . . . . . . . . . . . . . . . . . . . .

. 10-3

dd2xml . . . . . . . . . . . . . . . . . . . . . .

. 10-3

Когда это использовать? . . . . . . . . .

. 10-4

Синтаксис . . . . . . . . . . . . . . . . .

. 10-4

Приложение А

Анализ результатов

 

примера cart

A-1

Обзор информации . . . . . . . . . . . . . . . .

. A-1

Дескриптор Поставки . . . . . . . . . . . . . . .

A-2

Список методов

 

Компонента EJB . . . . . . . . . . . . . . . . . . .

A-4

Статистика Контейнера . . . . . . . . . . . . . .

A-4

Взаимодействие клиента и

 

Контейнера . . . . . . . . . . . . . . . . . . . . . .

A-5

Вывод на стороне клиента . . . . . . . . . . . .

A-7

Выполнение закупки . . . . . . . . . . . . . . . .

A-8

Приложение В

Поддержка EJB 1.0

B-1

Генерация Дескриптора

Поставки . . . . . . . . . . . . . . . . . . . . . . . . B-1

Ð ó ê î â î ä ñ ò â î

Ï ð î ã ð à ì ì è ñ ò à

E n t e r piirivi s e

J a v a B e a n s

à 1ë à â à

Предисловие

Руководство Программиста Enterprise JavaBeans Inprise Application Server содержит информацию, необходимую для разработки Компоне нтов EJB, написания кода клиентского приложения и поставки Компон ентов.

В предисловии приведено краткое содержание Руководства . В нем также описаны соглашения, используемые в тексте документ а, и приведены источники дополнительной информации, касающе йся EJB и CORBA.

Структура данного руководства

. Глава 2, "Обзор" - содержит вступление в технологию EJB и описан ие

.ее архитектуры.

Глава 3, "Первые шаги" - описывает основные приемы работы с Контейнерами EJB и программными средствами, а также рассказ ывает, как запустить на выполнение примеры приложений. Подробно

рассматривается пример создания простейшего Session-компонен та

.без состояния (stateless).

Глава 4, "Разработка Компонента EJB" - подробно рассматривает в се

.аспекты разработки Компонента.

Глава 5, "Написание клиентского приложения" - показано, как написать код приложения, которое является клиентом Конте йнера

. EJBГлава. 6, "Создание Session-компонентов" - показано, как писать Session-

.компоненты, как с состоянием (stateful), так и без (stateless).

Глава 7, "Создание Entity-компонентов" - показано,как писать Entityкомпоненты с сохранением состояния, управляемым как сами м Компонентом (Bean-Managed Persistence, BMP), так и его Контейнером (Container-Managed Persistence, CMP).

Ï ð å ä è ñ ë î â è å

1-1

Ê à ê è å ð à ç ä å ë û ï ð å ä í à ç í à ÷ å í û ä ë ÿ â à ñ ?

.

Глава 8, "Управление транзакциями" - описывает поддержку

.

транзакций и их взаимодействие с JDBC.

Глава 9, "Поставка Enterprise JavaBeans" - описывает, как использовать

.

инструменты Inprise EJB для поставки Компонентов.

Глава 10, "Средства работы с EJB" - описывает инструменты для

.управления и администрирования Компонентов EJB. Приложение A, "Анализ результатов примера cart" - содержит

.подробный разбор примера cart.

Приложение B, "Поддержка EJB 1.0" - объясняет, как надо поступать с

. Дескриптором"Индекс" Поставки в устаревшем формате EJB 1.0.

Какие разделы предназначены для вас?

В нижеприведенной таблице описано, для какой аудитории предназначена та или иная глава.

 

Аудитория

Наиболее интересные разделы

Менеджеры проектов, постановщики задач

Глава 1, "Предисловие" и Глава 2, "Обзор"

Разработчики

Глава 3, "Первые шаги" и последующие

 

 

главы Руководства

 

 

 

Типографские соглашения

В данном руководстве используются следующие соглашения :

Соглашение

Используется для

 

boldface

Символизирует, что синтаксическая конструкция должна бы ть

 

набрана именно так, как показано в тексте. Применительно к UNIX,

 

шрифт используется для имен баз данных, файлов и тому подо бного.

italics

Информация, вводимая пользователем или выводимая прилож ением;

 

также используется для новых терминов или названий книг.

computer

Пример кода или командной строки.

 

UPPERCASE

Используется для SQL-операторов и команд. Применительно к

 

Windows, шрифт используется для имен баз данных, файлов и тому

 

подобного.

 

[]

Необязательные параметры.

{}

Используются в сложных синтаксических конструкциях для

 

обозначения обязательных параметров.

...

Говорит о том, что строка является продолжением предыдущих строк

 

кода или указывает на возможный повтор предыдущего аргум ента

|Два взаимоисключающих варианта

1 - 2

Ð ó ê î â î ä ñ ò â î

Ï ð î ã ð à ì ì è ñ ò à

E n t e r p r i s e

J a v a B e a n s

Другие документы

Ñ î ã ë à ø å í è ÿ î ï ë à ò ô î ð ì à õ

Соглашения о платформах

Windows

WinNT

Win95

Win98

Win2000 UNIX Solaris AIX HP-UX IRIX

Digital

UNIX

В руководстве используются следующие символы для обозна чения описаний, зависящих от выбранной платформы:

Все Windows-платформы, включая Windows 3.1, Windows NT и Windows 95

только Windows NT только Windows 95 только Windows 98 только Windows 2000 Все виды UNIX только Solaris только AIX

только HP_UX

только IRIX

только Digital UNIX

Где найти дополнительную информацию

Предполагается, что читатель данного руководства знаком с общими принципами построения распределенных систем вообще и со спецификацией Sun Enterprise JavaBeans (EJB) в частности.

Ниже приведен список источников дополнительной информа ции по EJB и CORBA.

Информация по EJB

Большое количество информации вы можете найти на web-сайте S un (http://java.sun.com/products/ejb).

Òàì. содержится следующее:

. Спецификация Sun Enterprise JavaBeans 1.1

. Enterprise JavaBeans CORBA Mapping

Документ ("white paper") с названием "Enterprise JavaBeans Technology

. Component Model for the Java Platform"

. Наиболее часто задаваемые вопросы по EJB и ответы на них (FAQ)

Ï ð å ä è ñ ë î â è å

1-3

Extensible Markup Language (XML). Ñì. http://java.sun.com/xml

à ä å í à é ò è ä î ï î ë í è ò å ë ü í ó þ è í ô î ð ì à ö è þ

Ñ. темой EJB связаны также следующие документы:

. JavaBeans. Ñì. http://java.sun.com/beans

Java Naming and Directory Interface (JNDI). Ñì. http://java.sun.com/

. products/jndi

Java Remote Method Invocation (RMI). Ñì. http://java.sun.com/products/

. jdk/rmi

. Java Security. Ñì. http://java.sun.com/security

Информация по CORBA

Web-сайт Object Management Group (OMG) (http://www.omg.org) также содержит несколько документов, которые могут быть полезн ы для вас.

Обратите. внимание на следующее:

. Спецификация CORBA 2.3/IIOP

. Ñì. http://www.omg.org/

. Java to IDL Mapping

. Ñì. http://www.omg.org/corba/cichpter.html#mijav

. OMG Object Transaction service

. Ñì. http://www.omg.org/corba/sectrans.html

. ORB Portability Submission

Ñì. http://www.omg.org/library/c2indx.html

Поддержка пользователей продуктов Inprise

Inprise предлагает различные виды поддержки пользователей. Вы можете использовать Internet для доступа к нашим базам пользовательской информации и для общения с другими пользователями продуктов Inprise. В дополнение к этому, вы може те выбрать несколько видов технической поддержки по телефо ну - от помощи при инсталляции продуктов до платных консультаци й по интересующим вас конкретным вопросам.

Дополнительную информацию о службе поддержки пользоват елей вы можете найти на нашем web-сайте по адресу http://www.borland.com/ devsupport. Телефон службы поддержки: 800-523-7070; телефон отдела продаж: 800-632-2864. Пользователи, находящиеся вне территории США , могут найти интересующую их информацию на нашем web-сайте (htt p:/ /www.borland.com/bww/intlcust.html).

1 - 4

Ð ó ê î â î ä ñ ò â î

Ï ð î ã ð à ì ì è ñ ò à

E n t e r p r i s e

J a v a B e a n s