Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
java / лекции / лекция 12.ppt
Скачиваний:
101
Добавлен:
17.04.2018
Размер:
162.82 Кб
Скачать

Лекция 12

Работа с удаленными объектами

Клиент-сервер

Клиент

 

Сервер

 

 

 

Передача запроса

Получение ответа

Использование proxy (представителей)

Клиент

 

proxy

 

gjke

 

Сервер

 

 

 

 

 

 

 

Локальный вызов

 

 

 

метода proxy

 

Локальный

 

 

Передача запроса

 

 

 

 

вызов метода

 

 

 

 

Локальный

 

 

 

 

 

 

 

 

сервера

 

 

 

 

вызов метода

 

 

 

 

 

 

 

 

 

 

сервера

 

 

 

 

 

 

 

 

 

 

 

Получение

 

 

 

 

 

 

Получение ответа

 

результатов

Получение

 

локального

 

 

вызова метода

результатов

 

 

 

выполнения

 

 

 

метода

 

 

 

Технологии

RMI (Remote Method Invocation) — технология удаленного использования Java объектов

CORBA (Common Object Request Broker Architecture) — технология, позволяющая взаимодействовать объектам, которые были разработаны на разных языках программирования.

DCOM (Distributed Component Object Model)

— технология Microsoft (аналог CORBA)

SOAP (Simple Object Access Protocol) — широко используется в веб-сервисах

Технология RMI

Пример: вызов метода «Product find(Customer c)» удаленного объекта Warehouse

Клиент

 

Сервер

 

 

 

Передача объекта Customer

Вызов

метода

find()

Получение объекта Product

Классы-заглушки (stubs)

При вызове удаленных методов вызывается (локально) метод класса-заглушки.

Метод класса заглушки производит:

Развертывание параметров (marshalling)

Передачу данных на сервер Объект получатель выполняет:

Свертывание параметров

Поиск вызыванного объекта

Вызов данного метода

Извлечение и развертывание возвращаемого значения или исключения

Передачу пакета клиенту

Использование proxy (представителей)

Пример:

int q = centralWarehouse.getQuantity("Super Vacuum Cleaner");

Клиент

 

заглушка

 

получатель

 

Сервер

 

 

 

 

 

 

 

Локальный вызов

 

 

 

 

метода заглушки

Передача развернутых

 

Локальный

 

 

 

 

 

 

 

параметров

 

вызов метода

 

 

 

 

Локальный

 

 

 

 

 

 

 

 

 

сервера

 

 

 

 

 

вызов метода

 

 

 

 

 

 

 

 

 

 

 

 

сервера

 

 

 

 

 

 

 

 

 

 

 

 

Возврат

 

 

 

 

 

 

Передача развернутого

 

результата

 

 

 

выполнения

Возврат

возвращенного значения

 

 

метода

значения или

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

 

 

генерация

 

 

 

исключения

 

 

 

Удаленные объекты

Типы удаленных объекты должны быть описаны в виде интерфейса:

public interface Warehouse { int getQuantity(String desc)

throws RemoteException;

Product getProduct(Customer cust) throws RemoteException;

Product getProduct(Customer cust) throws RemoteException;

}

Объявление переменной:

Warehouse centralWarehouse = ...

Интерфейсы и их реализации

Объекты, совместно используемые сервером и клиентом должны описываться интерфейсом.

interface Product extends Remote {

String getDescription() throws

RemoteException;

}

Клиент не хранит копии объектов сервера, а хранит лишь ссылки на объекты-заглушки

Определение удаленных объектов

Product p = ...;

// клиент получает ссылку заглушки String d = g.getDescription();

System.out.println(d);

Описание класса (на сервере) public class ProductImpl

extends UnicastRemoteObject implements Product

{

private String descr;

Соседние файлы в папке лекции