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


10.3 Использование RMI Объектной Сериализации

Вызовите и возвратитесь, данные в вызовах RMI форматируются, используя протокол Сериализации Объекта Java. CallData каждого вызова метода пишется потоку вывода объекта Java, который содержит ObjectIdentifier (цель вызова), Работа (число, представляющее метод, который будет вызван), Хеш (число, которое проверяет, что клиентский тупик и скелет удаленного объекта используют тот же самый тупиковый протокол), сопровождаемый списком нуля или большего количества Параметров за вызов.

В тупиковом протоколе JDK1.1 Работа представляет число метода как присвоено rmic, и Хеш был хешем тупика/скелета, который является хешем интерфейса тупика. С Java 2 тупиковых протокола (Java 2 тупика сгенерированы, используя -v1.2 опция с rmic), у Работы есть значение-1, и Хеш является хешем, представляющим метод, чтобы вызвать. Хеш описывается в разделе" RemoteRef Интерфейс".

CallData:

Хеш Работы ObjectIdentifier Argumentsopt

ObjectIdentifier:

ObjectNumber UniqueIdentifier

UniqueIdentifier:

Время числа граф

Параметры:

Значение

Значение параметров

Значение:

Объект

Примитивный

ReturnValue вызова RMI состоит из кода возврата, чтобы указать или на нормальный или исключительный возврат, UniqueIdentifier, чтобы тегировать возвращаемое значение (имел обыкновение отправлять a DGCAck в случае необходимости) сопровождаемый результатом возврата: или Значение возвратилось или выданное Исключение.

ReturnValue:

0x01 UniqueIdentifier Valueopt

0x02 Исключение UniqueIdentifier

Отметьте - ObjectIdentifier, UniqueIdentifier, и EndpointIdentifier не выписываются, используя сериализацию значения по умолчанию, но каждый использует ее собственный специальный метод записи (это не writeObject метод, используемый объектной сериализацией); метод записи для каждого типа идентификатора добавляет свои компонентные данные последовательно к потоку вывода.

10.3.1 Аннотация класса и Загрузка Класса

RMI переопределяет annotateClass и resolveClass методы ObjectOutputStream и ObjectInputStream соответственно. Каждый class аннотируется кодовой базой URL (расположение, из которого class может быть загружен). В annotateClass метод, classloader, который загрузил class, запрашивается для его кодовой базы URL. Если classloader не -null и classloader имеет не -null кодовая база, тогда кодовая база пишется потоку, используя ObjectOutputStream.writeObject метод; иначе a null пишется потоку, используя writeObject метод. Отметьте: как оптимизация, классы в"java"пакет не аннотируется, так как они всегда доступны получателю.

Аннотация class разрешается во время десериализации, используя ObjectInputStream.resolveClass метод. resolveClass метод первые чтения аннотация через ObjectInputStream.readObject метод. Если аннотация, кодовая база URL, не -null, тогда это получает classloader для того, что URL и пытается загрузить class. class загружается при использовании a java.net.URLConnection выбирать байты class (тот же самый механизм, используемый апплетом веб-браузера classloader).



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