Методические указания к лабораторной работе
по курсу «Распределенные системы обработки информации»
"Удаленный вызов методов( RMI )"
Москва 2004 г.
Цель работы
Ознакомиться с RMI. Написать клиент RMI и сервер RMI.
Что такое RMI?
JavaRMI (RemoteMethodInvocation – удаленный вызов методов) представляет собой тип удаленного вызова процедур, независимый от сети, облегченный и полностью переносимый, так как написан на языке Java.
Возможно вы искали - Реферат: Удобства интернет
Основные шаги работы с RMI:
1. Определите (или найдите) удаленный интерфейс, согласованный с сервером.
2. Напишите код сервера.
3. Запустите программу rmic (JavaRMIstubcompiler – компилятор заглушек RMI) для генерации связующего кода.
4. Напишите код клиента.
Похожий материал - Лабораторная работа: Умножение и деление целых неотрицательных чисел в двоичном коде
5. Убедитесь, что на сервере запущен RMI реестр (программа rmiregistry).
6. Запустите сервер.
7. Запустите одного или нескольких клиентов.
Процедуры RMI определяют с помощью известного механизма Java – интерфейсов. Удаленные нтерфейсы долдны быть подклассами java.rmi. Remote, при этом и клиент и сервер должны находиться в одном пакете Java. Все параметры удаленных методов должны относиться или к примитивным типам (int, doubleи т.п.), либо реализовывать интерфейс java.io. Serializable.
Введение в распределенные вычисления с использованием RMI
Очень интересно - Реферат: Универсальная система RTWin
Технология RemoteMethodInvocation (RMI), впервые представленная в JDK 1.1, продвинула сетевое программирование на более высокий уровень. Хотя RMI относительно проста в использовании, она является необыкновенно мощной технологией и раскрывает перед обычным Java‑программистом полностью новую парадигму – мир распределенных объектных вычислений.
Этот курс представляет собой углубленное введение в эту универсальную технологию. RMI получила значительное развитие в JDK 1.1 и во многом была улучшена в Java 2 SDK. При необходимости, различия между этими двумя версиями будут отмечены.
Цели
Главной целью разработчиков RMI было предоставление возможности программистам разрабатывать распределенные Java‑программы, используя такие же синтаксис и семантику, как и при разработке обычных нераспределенных программ. Для этого они должны были преобразовать модель работы классов и объектов в одной виртуальной машине Java™ (JVM) в новую модель работы классов и объектов в распределенной (несколько JVM) вычислительной среде.
Сравнение распределенных и нераспределенных Java ‑программ
Вам будет интересно - Реферат: Унифицированный язык моделирования UML и сущность объектно-ориентированного подхода
Разработчики RMI стремились сделать использование распределенных Java‑объектов таким же, как и использование локальных объектов. В следующей таблице перечислены некоторые важные отличия.
Не беспокойтесь о том, что не все отличия вам понятны. Все прояснится после рассмотрения архитектуры RMI. Вы можете использовать эту таблицу в качестве ссылки во время изучения RMI.
| Локальный объект Удаленный объект | ||
| Определение объекта | Локальный объект определяется при помощи класса Java. | Экспортируемое поведение удаленного объекта определяется при помощи интерфейса, который должен быть расширен из интерфейса Remote. |
| Реализация объекта | Локальный объект реализуется своим классом Java. | Поведение удаленного объекта определяется классом Java, который реализует удаленный интерфейс. |
| Создание объекта | Новый экземпляр локального объекта создается оператором new. | Новый экземпляр удаленного объекта создается на компьютере хоста оператором new. Клиент не может непосредственно создать новый удаленный объект (если не использует технологию Java 2 Remote Object Activation). |
| Доступ к объекту | Доступ к локальному объекту осуществляется непосредственно через переменную-ссылку на объект. | Доступ к удаленному объекту осуществляется через переменную-ссылку на объект, указывающую на реализацию замещающей заглушки удаленного интерфейса. |
| Ссылки | В одной JVM, ссылка на объект указывает непосредственно на объект в динамической памяти. | «Удаленная ссылка» представляет собой указатель на замещающий объект («заглушку») в локальной динамической памяти. Заглушка содержит информацию, которая дает возможность соединиться с удаленным объектом, содержащим реализацию методов. |
| Активные ссылки | В одной JVM, объект считается «живым», если существует хотя бы одна ссылка на него. | В распределенной среде удаленная JVM может разрушиться, и сетевое соединение может быть потеряно. Считается, что удаленный объект имеет активную удаленную ссылку на него, если к нему производился доступ в течение определенного периода времени (срока аренды). Если все удаленные ссылки были удалены явно, или если у всех удаленных ссылок закончился срок аренды, тогда удаленный объект становится доступен для удаленной сборки мусора. |
| Финализация | Если объект реализует метод finalize(), он вызывается перед тем, как объект утилизируется сборщиком мусора. | Если удаленный объект реализует интерфейс Unreferenced, при удалении всех удаленных ссылок вызывается метод unreferenced этого интерфейса. |
| Сборка мусора | При удалении всех локальных ссылок на объект, он становится кандидатом на удаление сборщиком мусора. | Удаленный сборщик мусора работает совместно с локальным. Если нет удаленных ссылок и удалены все локальные ссылки на объект, он становится кандидатом для сборщика мусора в обычном значении этого понятия. |
| Исключительные ситуации | Исключительные ситуации являются либо исключительными ситуациями времени исполнения, либо классом Exceptions. Компилятор Java заставляет программу обрабатывать все Exceptions. | RMI заставляет программу иметь дело с любыми возможными объектами RemoteException, которые могут генерироваться. Это сделано для гарантии устойчивости распределенных приложений. |
Архитектура JavaRMI
Целью разработки архитектуры RMI было создание распределенной объектной модели Java, которая свободно интегрируется в язык программирования Java и локальную объектную модель. Разработчики RMI достигли этой цели; была создана система, которая переносит безопасность и устойчивость архитектуры Java в мир распределенных вычислений.
Интерфейсы: основа RMI
Похожий материал - Реферат: Уніфікована мова моделювання (UML)
Архитектура RMI основана на одном важном принципе: определение поведения и реализация этого поведения считаются разными понятиями. RMI дает возможность разделить и выполнить на разных JVM код, определяющий поведение, и код, реализующий поведение.
Это прекрасно соответствует требованиям распределенных систем, в которых клиенты знают об определениях служб, а серверы предоставляют эти службы.
Конкретно в RMI определение удаленной службы кодируется при помощи интерфейса Java. Реализация удаленной службы кодируется в классе. Таким образом, ключ к пониманию RMI– помнить, что интерфейсы определяют поведение, а классы определяют реализацию.
Следующий рисунок иллюстрирует это разделение: