RMI


Распределенная объектная модель, специфицирующая, каким образом производится вызов удалённых методов, работающих на другой виртуальной машине Java.

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

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

При вызове метода удалённого объекта на самом деле вызывается обычный метод языка Java, инкапсулированный в специальном объекте-заглушке (stub), который является представителем серверного объекта. Заглушка находится на клиентском компьютере, а не на сервере. Она упаковывает параметры удалённого метода в блок байтов. Каждый параметр кодируется с помощью алгоритма, обеспечивающего независимость от аппаратуры. Например, числа всегда передаются в порядке, при котором сначала передаётся старший байт (big-endian). При этом объекты подвергаются сериализации. Процесс кодирования параметров называется развертыванием параметров (parameter marshaling). Основная цель развёртывания параметров — преобразование их в формат, пригодный для передачи параметров от одной виртуальной машины к другой.

Затем метод заглушки посылает эту информацию серверу. Далее объект-получатель, скелет (skeleton), выполняет для каждого вызова удалённого метода следующие действия:

Клиентский объект-заглушка свертывает возвращаемое значение или исключение, полученное с сервера. Результат свёртывания становится возвращаемым значением метода заглушки. Если удалённый метод возвращает исключение, то объект-заглушка повторит его в среде объекта-клиента.