- •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.
29 Понятие, определение и использование удаленного (Remote) и локального интерфейсов. Их применение и программная реализация (примеры).
Клиент может получить доступ к сессионному бину или сущности только через методы, определенные в интерфейсах бина. Эти интерфейсы определяют представление бина для клиента. Все остальные аспекты бина - реализации методов, установки дескриптора развертывания, абстрактные схемы и обращения к базе данных - скрыты от клиента.
Удаленный доступ
Удаленный интерфейс является Java Интерфейсом, который представляет интерфейсы, необходимые для решения задачи. Т.е., используя удаленный интерфейс можно вызывать методы, реализующие бизнес-логику задачи. Удаленный интерфейс играет ту же роль, что и IDL интерфейс в CORBA.
Как упоминалось ранее, EJB компоненты содержат не менее одного класса (EJB) и двух интерфейсов: Remote и Home интерфейсы. При создании удаленного интерфейса для EJB, необходимо следовать следующим принципам:
Удаленный интерфейс должен быть публичным (public).
Удаленный интерфейс должен расширять интерфейс javax.ejb.EJBObject.
Каждый метод удаленного интерфейса должен декларировать java.rmi.RemoteException в предложении throws помимо всех исключений, спецефичных для приложения.
Любой объект, передаваемый в качестве аргумента или возвращаемого значения (встроенный, либо содержащийся внутри локального объекта) должен быть действительным с точки зрения RMI-IIOP типом данных (это относится и к другим EJB объектам).
Вот простой удаленный интерфейс для Sample EJB:
//: Sample.java
// Удаленный интерфейс для SampleBean
import java.rmi.*;
import javax.ejb.*;
public interface Sample extends EJBObject {
public long getSample() //метод реализации бизнес-логики
throws RemoteException;
} ///:~
Локальный доступ
Чтобы построить корпоративный бин, допускающий локальный доступ, вы должны закодировать локальный интерфейс и локальный домашний интерфейс. Локальный интерфейс определяет бизнес-методы бина, а локальный домашний интерфейс определяет его жизненный цикл и методы поиска. Если бин сущности является целью в отношениях, управляемых контейнером, то он должен иметь локальные интерфейсы. Бины сущностей, участвующие в отношениях, управляемых контейнером, должны размещаться в одном и том же EJB JAR-файле, так как они требуют локального доступа. Главная выгода этой локальности - увеличение производительности: локальные вызовы обычно выполняются быстрее, чем удаленные.
Локальный клиент имеет такие характеристики:
Он должен выполняться на той же JVM, что и корпоративный бин, к которому он обращается.
Он может быть Web-компонентом или другим корпоративным бином.
Для локального клиента местонахождение корпоративного бина, к которому он обращается не прозрачно.
Часто это - бин сущности, который имеет отношения, управляемые контейнером, с другим бином сущности.
Вот простой локальный интерфейс для LocalCustomer EJB:
import java.rmi.*;
import javax.ejb.*;
public interface LocalCustomer extends EJBLocalObject {
String getCustomerName();
void setCustomerName(String customerName);
LocalAddress getAddress();
void setAddress(LocalAddress address);
}