28.10.2015 17:57

RMI и вызов удалённых методов на языке Java

RMI и вызов удалённых методов на языке Java
Евгений Стелькин

Вам нужно разобраться, как использовать RMI для вызова удаленных методов. RMI генерирует помощников на стороне клиента и сервера — вплоть до создания клиентского помощника с таким же набором методов, как у удаленной службы. При этом вам не приходится писать код передачи данных по сети или ввода данных самостоятельно. Вы просто вызываете удаленные методы точно так же, как вызываете обычные методы объектов, выполняемых в локальной JVM клиента.

RMI также предоставляет всю инфраструктуру, обеспечивающую функционирование этого механизма (включая сервис поиска и обращения к удаленным объектам).

Между вызовами RMI и обычными (локальными) вызовами существует одно важное различие. Хотя со стороны клиента вызов метода идентичен локальному, клиентский помощник передает вызов метода по сети. В передаче данных задействована передача данных по сети и операции ввода/вывода. А что мы о них знаем? Они небезопасны! Они могут завершиться неудачей! Они могут генерировать исключения. В результате клиент должен быть готов к неожиданностям. Через пару страниц вы увидите, в чем именно заключается подготовка. В терминологии RMI клиентский помощник называется «заглушкой» (stub), а серверный помощник — «скелетом» (skeleton).

А теперь давайте рассмотрим все действия, предлагаемые Java Start Up, которые необходимы для превращения объекта в службу, принимающую удаленные вызовы (а также для выполнения удаленных вызовов на стороне клиента).

Создание удаленной службы

Далее приводится краткий обзор пяти шагов построения удаленной службы — другими словами, шагов, необходимых для того, чтобы взять обычный объект и наделить его способностью обслуживать вызовы удаленных клиентов. Рассмотрим общую последовательность действий:

Создание интерфейса удаленного доступа.
Интерфейс удаленного доступа определяет методы, вызываемые клиентом в удаленном режиме. Именно он будет указываться клиентом в качестве типа вашей службы. Реализуется как заглушкой, так и самой службой!

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

Генерирование заглушек и скелетов утилитой rmic. «Помощники» на стороне клиента и сервера. Вам не обязательно создавать эти классы и даже видеть код, который их генерирует. Все делается автоматически при запуске утилиты rmic, входящей в комплект поставки Java Development Kit.

Запуск rmiregistry. Клиент обращается к реестру RMI (rmiregistry) для получения заместителя (клиентской заглушки/объекта-помощника).

Запуск удаленной службы. Наконец, необходимо запустить объект удаленной службы. Класс реализации службы создает экземпляр службы и регистрирует его в реестре RMI. Зарегистрированная служба становится доступной для клиентов.

Самостоятельная установка стиральной машины Купить новостройку или вторичку? Проблема гаджетомании у детей Инструменты для малярных работ Можно ли заработать настоящие деньги с помощью мобильного телефона

Лента новостей