Учебники

Java RMI — Введение

RMI обозначает дистанционный вызов метода . Это механизм, который позволяет объекту, находящемуся в одной системе (JVM), получать доступ / вызывать объект, запущенный в другой JVM.

RMI используется для создания распределенных приложений; он обеспечивает удаленную связь между Java-программами. Это предусмотрено в пакете java.rmi .

Архитектура приложения RMI

В приложении RMI мы пишем две программы: серверную (на сервере) и клиентскую (на клиенте).

  • Внутри серверной программы создается удаленный объект, и ссылка на этот объект становится доступной для клиента (с использованием реестра).

  • Клиентская программа запрашивает удаленные объекты на сервере и пытается вызвать его методы.

Внутри серверной программы создается удаленный объект, и ссылка на этот объект становится доступной для клиента (с использованием реестра).

Клиентская программа запрашивает удаленные объекты на сервере и пытается вызвать его методы.

Следующая диаграмма показывает архитектуру приложения RMI.

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

Давайте теперь обсудим компоненты этой архитектуры.

  • Транспортный уровень — этот уровень связывает клиента и сервер. Он управляет существующим соединением, а также устанавливает новые соединения.

  • Заглушка — заглушка — это представление (прокси) удаленного объекта на клиенте. Он находится в клиентской системе; он действует как шлюз для клиентской программы.

  • Скелет — это объект, который находится на стороне сервера. заглушка связывается с этим скелетом для передачи запроса удаленному объекту.

  • RRL (Remote Reference Layer) — это уровень, который управляет ссылками, сделанными клиентом на удаленный объект.

Транспортный уровень — этот уровень связывает клиента и сервер. Он управляет существующим соединением, а также устанавливает новые соединения.

Заглушка — заглушка — это представление (прокси) удаленного объекта на клиенте. Он находится в клиентской системе; он действует как шлюз для клиентской программы.

Скелет — это объект, который находится на стороне сервера. заглушка связывается с этим скелетом для передачи запроса удаленному объекту.

RRL (Remote Reference Layer) — это уровень, который управляет ссылками, сделанными клиентом на удаленный объект.

Работа приложения RMI

Следующие пункты суммируют, как работает приложение RMI —

  • Когда клиент выполняет вызов к удаленному объекту, он принимается заглушкой, которая в конечном итоге передает этот запрос в RRL.

  • Когда RRL на стороне клиента получает запрос, он вызывает метод invoke () объекта remoteRef . Он передает запрос в RRL на стороне сервера.

  • RRL на стороне сервера передает запрос в Skeleton (прокси-сервер на сервере), который, наконец, вызывает требуемый объект на сервере.

  • Результат передается обратно клиенту.

Когда клиент выполняет вызов к удаленному объекту, он принимается заглушкой, которая в конечном итоге передает этот запрос в RRL.

Когда RRL на стороне клиента получает запрос, он вызывает метод invoke () объекта remoteRef . Он передает запрос в RRL на стороне сервера.

RRL на стороне сервера передает запрос в Skeleton (прокси-сервер на сервере), который, наконец, вызывает требуемый объект на сервере.

Результат передается обратно клиенту.

Маршаллинг и демаршаллинг

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

На стороне сервера упакованные параметры разделяются, а затем вызывается требуемый метод. Этот процесс известен как демаршаллинг .

Реестр RMI

Реестр RMI — это пространство имен, в котором размещены все объекты сервера. Каждый раз, когда сервер создает объект, он регистрирует этот объект в RMIregistry (используя методы bind () или reBind () ). Они зарегистрированы с использованием уникального имени, известного как имя привязки .

Чтобы вызвать удаленный объект, клиенту нужна ссылка на этот объект. В это время клиент выбирает объект из реестра, используя его имя привязки (используя метод lookup () ).

Следующая иллюстрация объясняет весь процесс —

реестр

Цели РМИ

Ниже приведены цели RMI —