Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
СИТ - 18 вопросов.docx
Скачиваний:
8
Добавлен:
08.11.2019
Размер:
103.77 Кб
Скачать

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);

}

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]