- •19. Особенности модели распределенных объектов. Модель rpc.
- •20. Архитектура механизмов rmi.
- •21. Разработка rmi-приложений. Примеры. Соглашения о передаче данных.
- •22. Corba, назначение, терминология. Oma. Модель cobra
- •Основные сервисы Corba, модель организация приложений corba, примеры.
- •25 Объектный адаптеры boa и роа. Назначение и основные функции. Статические и динамические вызовы в corba.
- •Язык idl, основные характеристики языка, создание распределенных объектов на idl Связь rmi и corba.
- •Понятие прозрачность, серванта, использование посредников proxies в corba. Name сервис
- •28. Платформа j2ee. Когда следует применять ejb. Типы ejb. Общая структура Beans.
- •29 Понятие, определение и использование удаленного (Remote) и локального интерфейсов. Их применение и программная реализация (примеры).
- •Понятие, определение и использование собственного (home) интерфейса. Их программная реализация (примеры).
- •Сеансовые (Session) компоненты ejb без состояния и с состоянием, их особенности и применение.
- •Общие принципы развертывания сеансовых компонентов ejb. Пример текста дескриптора поставки.
- •Сущностные (entity) компоненты, жизненный цикл, pool соединений. Общие принципы реализации. Особенности, методы entity компонент их назначение и использование.
- •34. Организация и особенности entity компонент с сохранением (персистентностью) управляемым контейнером (cmp).
- •35. Организация и особенности entity компонент с сохранением (персистентностью) управляемым компонентом (bmp).
- •36. Особенности реализации (home) и (remote) интерфейсов для entity компонентов. Home-интерфейс Entity-Компонента.
- •37. Контейнер ejb, понятие, назначение, основные функции.
- •38. Дескриптор поставки, структура и общие принципы организации кода. Пример описания на xml.
Сущностные (entity) компоненты, жизненный цикл, pool соединений. Общие принципы реализации. Особенности, методы entity компонент их назначение и использование.
Entity комп-ты явл-ся объектным предст-ем записи в реляц. БД. Обычно 1 такой компонент сопост. с 1 записью в БД. Поск-ку данные одной записи д. б. доступны для неск-ких клиентов сразу, Entity Bean д. б. доступен для неск-ких клиентов и, след-но, не может иметь состояния, относящегося к конкретному клиенту. Каждому Entity-бину соответствует свой первичный ключ, по которому он может быть однозначно определен клиентом. Также Entity-бин имеет всегда какое-либо состояние (набор величин атрибутов, определяющих данный Entity-бин), к-е м. б. зафиксировано и сохранено, а затем и восстановлено.
Жизненный цикл Entity-бина состоит из трех состояний:
а) Бин не существует;
б) Бин находится в "обобщенном" (pooled) режиме, куда сервер приложений по спецификации переводит набор бинов, задавая им метод setEntityContext(). Таким образом, в этом состоянии бин получил кое-какие признаки своего класса, но ещё не идентифицирован с определенным полем в СУБД;
в) Бин находится в "готовом" (ready) режиме, он идентифицирован с конкретными данными в базе данных.
Реализация бина.
Рассмотрим Entity-бин BookEJB. Он реализует набор пар get/set, которые получают значения его полей. Также реализованы методы управления персистентностью:
а) ejbCreate(BookPK BookPK, :) Создание экземпляра бина в базе.
б) ejbRemove() Удаление экземпляра бина из базы по первич. ключу.
в) Методы ejbLoad() и ejbStore(). Им соответствуют методы selectRow и updateRow соответственно в классе BookDAO. При указании типа транзакции required над бизнес-методом бина, перед заданием переменной и после её получения контейнер автоматически вызывает эти методы для чтения и сохранения состояния бина из базы.
г) BookPK BookPK ejbFindByPrimaryKey(BookPK BookPK) Нахождение экземпляра бина в базе.
д) getDBConnection Получ. соединения к СУБД из пула соед-й EJB-конт-ра.
Базовым классом для класса entity-компонента является класс javax.ejb.EntityBean.
Кроме вышеперечисленный, интерфейс EntityBean содержит следующие методы:
setEntityContext() – устанавливает контекст компонента. Контейнер использует этот метод для передачи ссылки на интерфейс EntityContext экземпляру компонента. Этот интерфейс содержит методы, которые позволяют получить доступ к свойствам среды исполнения компонента;
unsetEntityContext() – вызывается контейнером перед тем, как происходит уничтожение текущего экземпляра entity-компонента;
ejbActivate() – уведомляет компонент о том, что он только что был активизирован;
ejbPassivate() – уведомляет компонент о том, что готовится его деактивация, то есть экземпляр будет отсоединен от конкретного entity-объекта (от конкретных данных в базе данных) и возвращен в пул доступных экземпляров;
Итого: каждый entity-бин должен обладать следующими характеристиками:
К еntity-бинам может обращаться одновременно большое количество пользователей.
Entity-бины могут участвовать в транзакциях.
Entity-бины представляют данные в структуре домена.
Entity-бины перманентны. Они существуют до тех пор, пока существуют данные в структуре домена.
Entity-бины не подвергаются влиянию системных сбоев. Клиент не теряет данные в результате сбоя или отключения сервера EJB.
Entity-бины имеют постоянные объектные ссылки, которые содержат неизменяемый ключ данного бина.