Spec-Zone.ru › OpenJDK 27

Класс RemoteObjectInvocationHandler

java.lang.Object
java.rmi.server.RemoteObject
java.rmi.server.RemoteObjectInvocationHandler
Все реализуемые интерфейсы:
Serializable, InvocationHandler, Remote
public class RemoteObjectInvocationHandler extends RemoteObject implements InvocationHandler
Реализация интерфейса InvocationHandler для использования с вызовом удалённых методов Java (Java RMI). Этот обработчик вызовов можно использовать вместе с экземпляром динамического прокси вместо предварительно сгенерированного класса заглушки.

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

Начиная с:
1.5
См. также:
  • Сериализованная форма

Краткое описание полей

Поля, объявленные в классе RemoteObject

ref
Модификатор и тип Поле Описание
protected RemoteRef ref
Удалённая ссылка объекта.

Краткое описание конструкторов

Конструктор Описание
RemoteObjectInvocationHandler(RemoteRef ref)
Создаёт новый RemoteObjectInvocationHandler, сконструированный с указанным RemoteRef.

Краткое описание методов

Модификатор и тип Метод Описание
Object invoke(Object proxy, Method method, Object[] args)
Обрабатывает вызов метода, выполненный для инкапсулирующего экземпляра прокси, proxy, и возвращает результат.

Методы, объявленные в классе RemoteObject

equals, getRef, hashCode, toString, toStub
Модификатор и тип Метод Описание
boolean equals(Object obj)
Сравнивает два удалённых объекта на равенство.
RemoteRef getRef()
Возвращает удалённую ссылку на удалённый объект.
int hashCode()
Возвращает хеш-код удалённого объекта.
String toString()
Возвращает строку, представляющую значение этого удалённого объекта.
static Remote toStub(Remote obj)
Возвращает заглушку для удалённого объекта obj, переданного в качестве параметра.

Методы, объявленные в классе Object

clone, finalize, getClass, notify, notifyAll, wait, wait, wait
Модификатор и тип Метод Описание
protected Object clone()
Создаёт и возвращает копию этого объекта.
protected void finalize()
Устарело, планируется удаление: этот элемент API может быть удалён в будущей версии.
Финализация объявлена устаревшей и может быть удалена в одном из следующих выпусков.
final Class<?> getClass()
Возвращает класс времени выполнения этого Object.
final void notify()
Пробуждает один поток, ожидающий на мониторе этого объекта.
final void notifyAll()
Пробуждает все потоки, ожидающие на мониторе этого объекта.
final void wait()
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова notify или interrupt.
final void wait(long timeoutMillis)
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова notify или interrupt, либо истечения определённого промежутка реального времени.
final void wait(long timeoutMillis, int nanos)
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова notify или interrupt, либо истечения определённого промежутка реального времени.

Подробное описание конструкторов

RemoteObjectInvocationHandler

public RemoteObjectInvocationHandler(RemoteRef ref)
Создаёт новый RemoteObjectInvocationHandler, сконструированный с указанным RemoteRef.
Параметры:
ref — удалённая ссылка
Исключения:
NullPointerException — если ref равно null

Подробное описание методов

invoke

public Object invoke(Object proxy, Method method, Object[] args) throws Throwable
Обрабатывает вызов метода, выполненный для инкапсулирующего экземпляра прокси, proxy, и возвращает результат.

RemoteObjectInvocationHandler реализует этот метод следующим образом:

Если method является одним из следующих методов, он обрабатывается, как описано ниже:

  • Object.hashCode: Возвращает значение хеш-кода прокси.
  • Object.equals: Возвращает true, если аргумент (args[0]) является экземпляром класса динамического прокси и этот обработчик вызовов равен обработчику вызовов этого аргумента; в противном случае возвращает false.
  • Object.toString: Возвращает строковое представление прокси.

Если method переопределяет Object.finalize, этот метод игнорируется.

В противном случае удалённый вызов выполняется следующим образом:

  • Если proxy не является экземпляром интерфейса Remote, выбрасывается IllegalArgumentException.
  • В противном случае для RemoteRef этого обработчика вызовов вызывается метод invoke; ему передаются proxy, method, args и хеш метода (определённый в разделе 8.3 спецификации «Вызов удалённых методов Java (RMI)») для method, после чего возвращается результат.
  • Если RemoteRef.invoke выбрасывает исключение и это исключение является проверяемым, но не может быть приведено к типу ни одного исключения в предложении throws метода, реализуемого классом proxy, то это исключение оборачивается в UnexpectedException, после чего выбрасывается обёрнутое исключение. В противном случае этот метод выбрасывает исключение, выброшенное invoke.

Семантика этого метода не определена, если аргументы не могли быть получены от экземпляра какого-либо допустимого класса динамического прокси, содержащего этот обработчик вызовов.

Определено в:
invoke в интерфейсе InvocationHandler
Параметры:
proxy — экземпляр прокси, для которого был вызван метод
method — экземпляр Method, соответствующий методу интерфейса, вызванному для экземпляра прокси
args — массив объектов, содержащий значения аргументов, переданных при вызове метода для экземпляра прокси, или null, если метод не принимает аргументов
Возвращает:
значение, возвращаемое при вызове метода для экземпляра прокси
Исключения:
Throwable — исключение, которое следует выбросить при вызове метода для экземпляра прокси
См. также:
  • UndeclaredThrowableException

Сообщить об ошибке или предложить улучшение
Дополнительную справочную информацию по API и документацию для разработчиков см. в разделе Документация Java SE, содержащем более подробные описания для разработчиков, концептуальные обзоры, определения терминов, обходные решения и рабочие примеры кода. Другие версии.
Java является товарным знаком или зарегистрированным товарным знаком Oracle и/или её аффилированных лиц в США и других странах.
Авторское право © 1993, 2026, Oracle и/или её аффилированные лица, 500 Oracle Parkway, Redwood Shores, CA 94065 USA.
Все права защищены. Использование регулируется условиями лицензии и политикой распространения документации.

© 1993, 2025, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API