Spec-Zone .ru
спецификации, руководства, описания, API
СОДЕРЖАНИЕ | ПРЕДЫДУЩИЙ | NEXT Java Удаленный Вызов метода


10.2 Транспортный протокол RMI

Проводной формат для RMI представляется Потоком. Терминология, принятая здесь, отражает клиентскую перспективу. Обращается к выходным сигналам, и В ссылается на входные сигналы. Содержание транспортного заголовка не форматируется, используя объектную сериализацию.
Поток:

В

Потоки ввода и вывода, используемые RMI, соединяются. У каждого поток есть соответствие В потоке. Поток в грамматике отображается на поток вывода сокета (с точки зрения клиента). В потоке (в грамматике) соединяется с входным потоком соответствующего сокета. Так как выходной и входной потоки соединяются, единственной информацией о заголовке, необходимой на входном потоке, является подтверждение относительно того, понимается ли протокол; другая информация о заголовке (такая как магическое число и номер версии) может подразумеваться контекстом потокового соединения.


10.2.1 Формат Потока вывода

Поток вывода в RMI состоит из транспортной информации о Заголовке, сопровождаемой последовательностью сообщений. Альтернативно, поток вывода может содержать вызов, встроенный в протокол HTTP.

:

Сообщения заголовка
HttpMessage

Заголовок:

0x4a 0x52 0x4d 0x49 Протокол Версии

Версия:

0x00 0x01

Протокол:

StreamProtocol
SingleOpProtocol
MultiplexProtocol

StreamProtocol:

0x4b

SingleOpProtocol:

0x4c

MultiplexProtocol:

0x4d

Сообщения:

Сообщение
Сообщение сообщений

Сообщения обертываются в пределах определенного протокола как определено Протоколом. Для SingleOpProtocol после Заголовка может только быть одно сообщение, и нет никаких дополнительных данных, в которые обертывается сообщение. SingleOpProtocol используется для вызова, встроенного в запросы HTTP, где взаимодействие вне единственного запроса и ответа не возможно.

Для StreamProtocol и MultiplexProtocol, сервер должен ответить байтом 0x4e подтверждающий поддержку протокола, и EndpointIdentifier, который содержит имя хоста и номер порта, который может видеть сервер, используется клиентом. Клиент может использовать эту информацию, чтобы определить ее имя хоста, если это иначе неспособно сделать это для соображений безопасности. Клиент должен тогда ответить другим EndpointIdentifier, который содержит конечную точку значения по умолчанию клиента для того, чтобы принять соединения. Это может использоваться сервером в случае MultiplexProtocol, чтобы идентифицировать клиент.

Для StreamProtocol, после этого согласования конечной точки, сообщения отправляются по потоку вывода без любого дополнительного обертывания данных. Для MultiplexProtocol сокетное соединение используется в качестве конкретного соединения для мультиплексированного соединения, как описано в Разделе 10.6, "Протокол Мультиплексирования RMI." Виртуальные соединения, инициируемые по этому мультиплексированному соединению, состоят из ряда сообщений как описано ниже.

Есть три типа выходных сигналов: Вызовите, Ping и DgcAck. Вызов кодирует вызов метода. Ping является сообщением на транспортном уровне для того, чтобы протестировать живой из удаленной виртуальной машины. DGCAck является подтверждением, направленным к распределенному сборщику "мусора" сервера, который указывает, что удаленные объекты в возвращаемом значении от сервера были получены клиентом.

Сообщение:

Вызвать
Ping
DgcAck

Вызовите:

0x50 CallData

Ping:

0x52

DgcAck:

0x54 UniqueIdentifier


10.2.2 Формат Входного Потока

Есть в настоящий момент три типа входных сигналов: ReturnData, HttpReturn и PingAck. ReturnData является результатом "нормального" вызова RMI. HttpReturn является следствием возврата вызова, встроенного в протокол HTTP. PingAck является подтверждением для сообщения Ping.

В:

Возвраты ProtocolAck
ProtocolNotSupported
HttpReturn

ProtocolAck:

0x4e

ProtocolNotSupported:

0x4f

Возвраты:

Возвратиться
Возврат возвратов

Возвратитесь:

ReturnData
PingAck

ReturnData:

0x51 ReturnValue

PingAck:

0x53



СОДЕРЖАНИЕ | ПРЕДЫДУЩИЙ | NEXT
Авторское право © 1997, 2010, Oracle и/или его филиалы. Все права защищены.