Факультет «Информатика и системы управления»
Методические указания к лабораторной работе
по курсу «Распределенные системы обработки информации»
"Удаленный вызов методов(RMI)"
Москва 2004 г.
Цель работы
Ознакомиться с RMI. Написать клиент RMI и сервер RMI.
Что такое RMI?
Java RMI (Remote Method Invocation – удаленный вызов методов) представляет собой тип удаленного вызова процедур, независимый от сети, облегченный и полностью переносимый, так как написан на языке Java.
Основные шаги работы с RMI:
1. Определите (или найдите) удаленный интерфейс, согласованный с сервером.
2. Напишите код сервера.
3. Запустите программу rmic (Java RMI stub compiler – компилятор заглушек RMI) для генерации связующего кода.
4. Напишите код клиента.
5. Убедитесь, что на сервере запущен RMI реестр (программа rmiregistry).
6. Запустите сервер.
7. Запустите одного или нескольких клиентов.
Процедуры RMI определяют с помощью известного механизма Java – интерфейсов. Удаленные нтерфейсы долдны быть подклассами java.rmi. Remote, при этом и клиент и сервер должны находиться в одном пакете Java. Все параметры удаленных методов должны относиться или к примитивным типам (int, double и т.п.), либо реализовывать интерфейс java.io. Serializable.
Введение в распределенные вычисления с использованием RMI
Технология Remote Method Invocation (RMI), впервые представленная в JDK 1.1, продвинула сетевое программирование на более высокий уровень. Хотя RMI относительно проста в использовании, она является необыкновенно мощной технологией и раскрывает перед обычным Java‑программистом полностью новую парадигму – мир распределенных объектных вычислений.
Этот курс представляет собой углубленное введение в эту универсальную технологию. RMI получила значительное развитие в JDK 1.1 и во многом была улучшена в Java 2 SDK. При необходимости, различия между этими двумя версиями будут отмечены.
Цели
Главной целью разработчиков RMI было предоставление возможности программистам разрабатывать распределенные Java‑программы, используя такие же синтаксис и семантику, как и при разработке обычных нераспределенных программ. Для этого они должны были преобразовать модель работы классов и объектов в одной виртуальной машине Java™ (JVM) в новую модель работы классов и объектов в распределенной (несколько JVM) вычислительной среде.
Сравнение распределенных и нераспределенных Java‑программ
Разработчики RMI стремились сделать использование распределенных Java‑объектов таким же, как и использование локальных объектов. В следующей таблице перечислены некоторые важные отличия.
Не беспокойтесь о том, что не все отличия вам понятны. Все прояснится после рассмотрения архитектуры RMI. Вы можете использовать эту таблицу в качестве ссылки во время изучения RMI.
Локальный объект Удаленный объект Определение объекта Локальный объект определяется при помощи класса Java. Экспортируемое поведение удаленного объекта определяется при помощи интерфейса, который должен быть расширен из интерфейса Remote. Реализация объекта Локальный объект реализуется своим классом Java. Поведение удаленного объекта определяется классом Java, который реализует удаленный интерфейс. Создание объекта Новый экземпляр локального объекта создается оператором new. Новый экземпляр удаленного объекта создается на компьютере хоста оператором new. ............