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


2.6 Передача параметров в Удаленном Вызове метода

Параметр, или возвращаемое значение от, удаленный объект может быть любым объектом, который сериализуем. Это включает типы примитивов, удаленные объекты, и неудаленные объекты, которые реализуют java.io.Serializable интерфейс. Для получения дополнительной информации на том, как сделать классы сериализуемыми, см. "Спецификацию Сериализации Объекта Java." Классы, для параметров или возвращаемых значений, которые не доступны локально, загружаются динамически системой RMI. См. раздел по "Динамическому Классу, Загружающемуся" для получения дополнительной информации о том, как RMI загружает параметр и классы возвращаемого значения, читая параметры, возвращаемые значения и исключения.


2.6.1 Передача Неудаленных объектов

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

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

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


2.6.2 Передача Удаленных объектов

Передавая экспортируемый удаленный объект в качестве параметра или возвращаемое значение в удаленном вызове метода, тупик для того удаленного объекта передают вместо этого. Удаленные объекты, которые не экспортируются, не будут заменены тупиковым экземпляром. Удаленный объект, который передают в качестве параметра, может только реализовать удаленные интерфейсы.


2.6.3 Ссылочная целостность

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


2.6.4 Аннотация класса

Когда объект отправляется от одной JVM до другого в удаленном вызове метода, система RMI аннотирует дескриптор class в потоке вызова с информацией (URL) class так, чтобы class мог быть загружен в получателе. Это - требование что классы быть загруженным по требованию во время удаленного вызова метода.


2.6.5 Передача параметра

Параметры в вызове RMI пишутся потоку, который является подклассом class java.io.ObjectOutputStream чтобы сериализировать параметры месту назначения удаленного вызова. ObjectOutputStream разделите на подклассы переопределяет replaceObject метод, чтобы заменить каждый экспортируемый удаленный объект его соответствующим тупиковым экземпляром. Параметры, которые являются объектами, пишутся потоку, используя ObjectOutputStream's writeObject метод. ObjectOutputStream вызовы replaceObject метод для каждого объекта, записанного потоку через writeObject метод (который включает объекты, на которые ссылаются те объекты, которые пишутся). replaceObject метод подкласса RMI ObjectOutputStream возвращает следующее: Подкласс RMI ObjectOutputStream также реализации annotateClass метод, который аннотирует поток вызова расположением class так, чтобы это могло быть загружено в получателе. См. раздел "Динамический Класс, Загружающийся" для получения дополнительной информации о как annotateClass используется.

Так как параметры пишутся синглу ObjectOutputStream, ссылки, которые обращаются к тому же самому объекту в вызывающей стороне, обратятся к той же самой копии объекта в получателе. В получателе параметры читаются синглом ObjectInputStream.

Любое другое поведение значения по умолчанию ObjectOutputStream для того, чтобы записать объекты (и так же ObjectInputStream для того, чтобы считать объекты), сохраняется в передаче параметров. Например, вызов writeReplace при записи объектов и readResolve когда чтение объектов соблюдает параметр RMI, упорядочивают и неупорядочивают потоки.

Подобным образом к передаче параметров в RMI как описано выше, возвращаемое значение (или исключение) пишется подклассу ObjectOutputStream и имеет то же самое заменяющее поведение как передача параметра.



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