Spec-Zone .ru
спецификации, руководства, описания, API
|
СОДЕРЖАНИЕ | ПРЕДЫДУЩИЙ | NEXT | Java Удаленный Вызов метода |
java.io.Serializable
интерфейс. Для получения дополнительной информации на том, как сделать классы сериализуемыми, см. "Спецификацию Сериализации Объекта Java." Классы, для параметров или возвращаемых значений, которые не доступны локально, загружаются динамически системой RMI. См. раздел по "Динамическому Классу, Загружающемуся" для получения дополнительной информации о том, как RMI загружает параметр и классы возвращаемого значения, читая параметры, возвращаемые значения и исключения. Так, когда неудаленный объект передают как значение аргумента или возвращаемое значение в удаленном вызове метода, контент неудаленного объекта копируется прежде, чем вызвать запрос к удаленному объекту.
Когда неудаленный объект возвращается из удаленного вызова метода, новый объект создается в виртуальной машине вызова.
java.io.ObjectOutputStream
чтобы сериализировать параметры месту назначения удаленного вызова. ObjectOutputStream
разделите на подклассы переопределяет replaceObject
метод, чтобы заменить каждый экспортируемый удаленный объект его соответствующим тупиковым экземпляром. Параметры, которые являются объектами, пишутся потоку, используя ObjectOutputStream
's writeObject
метод. ObjectOutputStream
вызовы replaceObject
метод для каждого объекта, записанного потоку через writeObject
метод (который включает объекты, на которые ссылаются те объекты, которые пишутся). replaceObject
метод подкласса RMI ObjectOutputStream
возвращает следующее: replaceObject
экземпляр java.rmi.Remote
и тот объект экспортируется во время выполнения RMI, тогда это возвращает тупик для удаленного объекта. Если объект является экземпляром java.rmi.Remote
и объект не экспортируется во время выполнения RMI, тогда replaceObject
возвращает объект непосредственно. Тупик для удаленного объекта получается через звонок в метод java.rmi.server.RemoteObject.toStub
.replaceObject
не экземпляр java.rmi.Remote
, тогда объект просто возвращается.ObjectOutputStream
также реализации annotateClass
метод, который аннотирует поток вызова расположением класса так, чтобы это могло быть загружено в получателе. См. раздел "Динамический Класс, Загружающийся" для получения дополнительной информации о как annotateClass
используется. Так как параметры пишутся синглу ObjectOutputStream
, ссылки, которые обращаются к тому же самому объекту в вызывающей стороне, обратятся к той же самой копии объекта в получателе. В получателе параметры читаются синглом ObjectInputStream
.
Любое другое поведение по умолчанию ObjectOutputStream
для того, чтобы записать объекты (и так же ObjectInputStream
для того, чтобы считать объекты), сохраняется в передаче параметров. Например, вызов writeReplace
при записи объектов и readResolve
когда чтение объектов соблюдает параметр RMI, упорядочивают и неупорядочивают потоки.
Подобным образом к передаче параметров в RMI как описано выше, возвращаемое значение (или исключение) пишется подклассу ObjectOutputStream
и имеет то же самое заменяющее поведение как передача параметра.