- •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.
36. Особенности реализации (home) и (remote) интерфейсов для entity компонентов. Home-интерфейс Entity-Компонента.
Несколько entity-Компонентов могут реализовывать один и тот же интерфейс, даже если они используют различный вид управления состоянием (СМР или BMP). И SavingsAccount, и CheckingAccount используют один и тот же home-интерфейс (AccountHome) и remote-интерфейс (Account).
Home-интерфейсы для entity- и session-Компонентов очень похожи. Они наследуют один и тот же интерфейс javax.ejb.EJBHome. Home-интерфейс для entity-Компонента обязан объявить хотя бы один метод поиска; кроме того, наличие create-методов не является обязательным.
Пример Кода. Интерфейс AccountHome
public interface AccountHome extends javax.ejb.EJBHome { Account create(String name, float balance)throws java.rmi.RemoteException, javax.ejb.CreateException;
Account findByPrimaryKey(AccountPK primaryKey)
throws java.rmi.RemoteException, javax.ejb.FinderException; Java.util.Enumeration findAccountsLargerThan(float balance)
throws java.rmi.RemoteException, javax.ejb.FinderException; }
Интерфейс AccountHome объявляет три метода. Хотя наличие метода create () не является обязательным, такой метод объявлен в нашем примере. Этот метод позволяет добавить новую запись в сопоставленную с Компонентом таблицу БД. В нашем примере метод create () имеет два аргумента - номер счета (string) и его начальное состояние (float). Реализация метода использует значения этих аргументов для инициализации объекта, т.е. присвоения начальных значений номера счета и его состояния для вновь созданного объекта. Entity-Компонент обязан объявить метод поиска findByPrimarykey(); он находится в интерфейсе AccountHome. Этот метод имеет единственный аргумент - значение главного ключа типа AccountPK, и возвращает ссылку на remote-интерфейс Account. Разумеется, метод используются для поиска только одного Компонента.
В home-интерфейсе AccountHome объявлен еще один метод поиска, findAccountLargerThan (), хотя это и не является обязательным. Этот метод возвращает набор Компонентов (Java Enumeration), которые удовлетворяют условию поиска (на счету средств больше, чем указанная величина).
Remote-интерфейс Entity-Компонента
Несколько Entity-Компонентов могут реализовывать один и тот же remote-интерфейс, даже если они используют различные способы сохранения своего состояния (BMP или СМР). Оба Entity-Компонента примера bank реализуют один и тот же интерфейс Account.
Remote-интерфейсы для Session- и Entity-Компонентов практически идентичны друг другу - оба они наследуют интерфейс javax.ejb.EJBObject и объявляют те бизнес-методы, который должны быть доступны для клиента.
Пример Кода 7.5 содержит реализацию remote-интерфейса: Пример Кода 7.5 Рето1е-интерфейсАссоип1
public interface Account extends javax.ejb.EJBObject {
public float getBalance() throws java.rmi.RemoteException; public void credit(float amount) throws
Java.rmi.RemoteException;
public void debit(float amount) throws java.rmi.RemoteException; }
Интерфейс Account объявляет три бизнес-метода: getBalance (), credit(0 и debit().
37. Контейнер ejb, понятие, назначение, основные функции.
EJB Контейнер представляет из себя среду времени выполнения, которая содержит и запускает EJB компоненты и предоставляет набор стандартных служб для этих компонент. Обязанности EJB Контейнера четко определены в спецификации, чтобы обеспечить нейтралитет производителя. EJB контейнер предоставляет низкоуровневое “обслуживание” EJB, включая распределенные транзакции, безопасность, управление циклом жизни компонента, кэширование, нити процессов и управление сессиями. Поставщик EJB Контейнера отвечает за предоставление EJB Контейнера.
Контейнер EJB лучше всего рассматривать как некий логический уровень управления компонентами. Контейнер взаимодействует с сервером, когда одному или нескольким компонентам, находящимся под управлением Контейнера, необходим доступ к системным ресурсам. Контейнер представляет собой совокупность классов и программных средств, работающих в контексте Сервера EJB. Контейнер, в частности, обеспечивает:
управление циклом жизни компонента – его созданием, инициализацией, сохранением его состояния в базе данных, если это необходимо;
возможность поиска клиентом нужных ему объектов;
гарантию того, что вызов методов происходит в контексте нужной транзакции;
базовый уровень обеспечения безопасности;
наличие инструментов разработчика, например, компилятора для генерации стабов.
Разработчик приложений, использующих EJB, обычно получает Сервер и Контейнер в готовом виде от фирм-производителей программного обеспечения. Примером может служить INPRISE Application Server.