Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
java1_2013_2014 / java23.pptx
Скачиваний:
132
Добавлен:
16.04.2015
Размер:
156.94 Кб
Скачать

JAVA-ТЕХНОЛОГИЯ

Сафонов Владимир Олегович

Профессор кафедры информатики, руководитель лаборатории Java- технологии (http://polyhimnie.math.spbu.ru/jtl)

Email: vosafonov@gmail.com

Лекция 23

Удаленные вызовы методов в Java: Remote Method Invocation (JNI)

Remote Method Invocation

Технология RMI, впервые представленная в JDK 1.1, позволяет Java-объекту, который выполняется на одной машине, вызвать метод объекта, выполняемый на другой машине.

Данная возможность играет фундаментальную роль для разработки распределенных Java-приложений

Идея технологии RMI основана на более ранней технологии RPC (Remote Procedure Call) для процедурного программирования, разработанной фирмой Sun в 1980-х гг.

(С)Сафонов В.О. 2013

Недостатки RPC

RPC поддерживает ограниченный набор простых типов данных.

Программисту необходимо знать специальный

язык определения интерфейса (IDL) для описания функций, которые допускают удаленный вызов.

(С) Сафонов В.О. 2013

Архитектура RMI

Архитектура RMI основана на принципе разделения определений поведения и его реализации

Данный принцип соответствует требованиям распределенных систем, в которых клиентам известны лишь определения сервисов, а серверы реализуют и предоставляют данные сервисы (SOA)

Клиентское

приложение

Интерфейс

запрос

результат

Серверное

приложение

Реализация

(С) Сафонов В.О. 2013

Схема RMI

Определение удаленного интерфейса с

объявлениями методов, которые клиент может вызвать у удаленного объекта.

Определение реализации удаленного объекта

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

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

(С)Сафонов В.О. 2013

Пример

Простое клиент-серверное приложение: Сервер вычислителя принимает задачи от клиентов, выполняет эти задачи и возвращает результаты

Сервер включает в себя интерфейс и класс

Интерфейс обеспечивает определение методов, которые могут быть вызваны клиентом. В сущности, интерфейс определяет представление клиента об удаленном объекте. Класс обеспечивает реализацию

(С)Сафонов В.О. 2013

Серверная часть.

1. Определение удаленного интерфейса

Удаленный интерфейс должен быть общедоступным – public

Удаленный метод должен быть объявлен в интерфейсе, который расширяет java.rmi.Remote

Remote представляет собой интерфейс-маркер

он не объявляет каких-либо методов, поэтому не обременен реализацией класса

Все удаленные методы могут генерировать исключения класса RemoteException

(С)Сафонов В.О. 2013

Compute.java

import java.rmi.Remote;

import java.rmi.RemoteException;

public interface Compute extends Remote {

Object executeTask( Task t) throws RemoteException;

}

RemoteException является контролируемым исключением и бросается в результате какого- либо сбоя( неполадки сети и т.п. ).

(С) Сафонов В.О. 2013

Task.java

Второй интерфейс, необходимый для вычислителя, определяет тип Task.

Этот тип используется как аргумент метода executeTask в интерфейсе Compute.

import java.io.Serializable;

public interface Task extends Serializable {

Object execute();

}

RMI использует механизм сериализации объектов для транспортировки объектов между разными JVM.

(С) Сафонов В.О. 2013

Реализация удаленного интерфейса

Серверу необходимо создавать и инсталлировать удаленные объекты

Эта процедура установки может быть инкапсулирована в методе main() в самом классе, реализующем удаленный объект, или может быть включена в совершенно другой класс. Процедура установки должна:

Создать и инсталлировать менеджер безопасности.

Создать один или более экземпляров удаленного объекта.

Зарегистрировать как минимум один из удаленных

объектов в регистре RMI (или в другом сервисе именования, таком, как JNDI), для самозагрузки.

(С)Сафонов В.О. 2013

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