Класс RemoteObjectInvocationHandler
- Все реализованные интерфейсы:
-
Serializable,InvocationHandler,Remote
public class RemoteObjectInvocationHandler extends RemoteObject implements InvocationHandler
InvocationHandler для использования с вызовом удаленных методов Java (Java RMI). Этот обработчик вызовов может быть использован совместно с экземпляром динамического прокси в качестве замены для заранее сгенерированного класса-заглушки. Приложения, как ожидается, не будут использовать этот класс напрямую. Экспортированный удаленный объект для использования динамического прокси с UnicastRemoteObject имеет экземпляр этого класса в качестве обработчика вызовов этого прокси.
- С:
- 1.5
- См. также:
Краткое описание полей
Поля, объявленные в классе java.rmi.server.RemoteObject
ref
Краткое описание конструкторов
| Конструктор | Описание |
|---|---|
RemoteObjectInvocationHandler |
Создает новый RemoteObjectInvocationHandler, построенный со специфицированным RemoteRef. |
Краткое описание методов
Подробное описание конструкторов
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. - В противном случае, вызывается метод
invokeна обработчике вызовов этого обработчика вызовов, передаваяproxy,method,args, и хэш метода (определенный в разделе 8.3 спецификации "Java Remote Method Invocation (RMI)") дляmethod, и возвращается результат. - Если исключение выбрасывается методом
RemoteRef.invokeи это проверенное исключение не может быть присвоено ни одному исключению в блокеthrowsметода, реализованного классомproxy, то это исключение оборачивается вUnexpectedExceptionи оборачиваемое исключение выбрасывается. В противном случае, исключение, сгенерированное методомinvoke, выбрасывается этим методом.
Семантика этого метода не определена, если аргументы не могли быть получены от экземпляра любого действительного класса динамического прокси, содержащего этот обработчик вызовов.
- Задано:
-
invokeв интерфейсеInvocationHandler - Параметры:
-
proxy- экземпляр прокси, на котором был вызван метод -
method- экземплярMethod, соответствующий интерфейсному методу, вызванному на экземпляре прокси -
args- массив объектов, содержащий значения аргументов, переданных в вызов метода на экземпляре прокси, илиnull, если метод не принимает аргументы - Возвращает:
- значение, которое должно быть возвращено из вызова метода на экземпляре прокси
- Исключения:
-
Throwable- исключение, которое должно быть сгенерировано при вызове метода на экземпляре прокси - См. также:
© 1993, 2023, 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.
https://docs.oracle.com/en/java/javase/21/docs/api/java.rmi/java/rmi/server/RemoteObjectInvocationHandler.html