Spec-Zone .ru
спецификации, руководства, описания, API
|
Приложения RMI часто включают две отдельных программы, сервер и клиент. Типичная программа сервера создает некоторые удаленные объекты, делает ссылки на эти доступные объекты, и ожидает клиентов, чтобы вызвать методы на эти объекты. Типичная клиентская программа получает удаленную ссылку на одного или более удаленные объекты на сервере и затем вызывает методы на них. RMI обеспечивает механизм, которым сервер и клиент передают и передают информацию назад и вперед. Такое приложение иногда упоминается как распределенное объектное приложение.
Распределенные объектные приложения должны сделать следующее:
Следующая иллюстрация изображает RMI распределенное приложение, которое использует реестр RMI, чтобы получить ссылку на удаленный объект. Сервер вызывает реестр, чтобы связать (или связать) имя с удаленным объектом. Клиент ищет удаленный объект его именем в реестре сервера и затем вызывает метод на это. Иллюстрация также показывает, что система RMI использует существующий веб-сервер, чтобы загрузить определения class, от сервера до клиента и от клиента к серверу, для объектов при необходимости.
Одна из центральных и уникальных функций RMI является своей возможностью загрузить определение class объекта, если class не определяется в виртуальной машине Java получателя. Все типы и поведение объекта, ранее доступного только в единственной виртуальной машине Java, могут быть переданы другому, возможно отдалить, виртуальная машина Java. Объекты передач RMI их фактическими классами, таким образом, поведение объектов не изменяется, когда они отправляются другой виртуальной машине Java. Эта возможность позволяет новым типам и поведениям быть введенными в удаленную виртуальную машину Java, таким образом динамически расширяя поведение приложения. Вычислить пример механизма в этом следе использует эту возможность представить новое поведение распределенной программе.
Как любое другое приложение Java, распределенное приложение, созданное при использовании Java, RMI составляется из интерфейсов и классов. Интерфейсы объявляют методы. Классы реализуют методы, объявленные в интерфейсах и, возможно, объявляют дополнительные методы также. В распределенном приложении некоторые реализации могли бы находиться в некоторых виртуальных машинах Java, но не других. Объекты с методами, которые могут быть вызваны через виртуальные машины Java, вызывают удаленными объектами.
Объект становится удаленным, реализовывая удаленный интерфейс, у которого есть следующие характеристики:
java.rmi.Remote
.java.rmi.RemoteException
в throws
пункт, в дополнение к любым специализированным исключениям.RMI обрабатывает удаленный объект по-другому от неудаленного объекта, когда объект передают с одной виртуальной машины Java на другую виртуальную машину Java. Вместо того, чтобы делать копию объекта реализации в виртуальной машине Java получения, RMI передает удаленный тупик для удаленного объекта. Тупиковые действия как локальный представитель, или прокси, для удаленного объекта и в основном, клиенту, удаленной ссылке. Клиент вызывает метод на локальный тупик, который ответственен за выполнение вызова метода на удаленном объекте.
Тупик для удаленного объекта реализует тот же самый набор удаленных интерфейсов, которые реализует удаленный объект. Это свойство позволяет тупику быть брошенным к любому из интерфейсов, которые реализует удаленный объект. Однако, только те методы, определенные в удаленном интерфейсе, доступны, чтобы быть вызванными от виртуальной машины Java получения.
Используя RMI, чтобы разработать распределенное приложение включает эти общие шаги:
Во-первых, определите свою архитектуру приложения, включая которую компоненты являются локальными объектами и какие компоненты удаленно доступны. Этот шаг включает:
Как с любой программой Java, Вы используете javac
компилятор, чтобы скомпилировать исходные файлы. Исходные файлы содержат объявления удаленных интерфейсов, их реализаций, любых других классов сервера, и клиентских классов.
rmic
компилятор. Однако, этот шаг больше не необходим. В этом шаге Вы делаете определенную сеть определений class доступной, такую как определения для удаленных интерфейсов и их связанных типов, и определения для классов, которые должны быть загружены на клиенты или серверы. Определения классов обычно делаются сетью, доступной через веб-сервер.
Запуск приложения включает выполнение реестра удаленного объекта RMI, сервера, и клиента.
Остальная часть этого раздела идет через шаги, используемые, чтобы создать вычислить механизм.
Возможность выполнить произвольные задачи включается динамическим характером платформы Java, которая расширяется на сеть RMI. RMI динамически загружает код задачи в виртуальную машину Java вычислить механизма и выполняет задачу без предварительных знаний class, который реализует задачу. Такое приложение, у которого есть возможность загрузить код динамически, часто вызывают основанным на поведении приложением. Такие приложения обычно требуют полных поддерживающих агент инфраструктур. С RMI такие приложения являются частью основных механизмов для распределенных вычислений на платформе Java.