Класс 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 или Activatable, имеет экземпляр этого класса в качестве обработчика вызовов этого прокси.
- С:
- 1.5
- См. также:
- Сериализованная форма
Поля
Поля, объявленные в классе java.rmi.server.RemoteObject
ref
Конструкторы
| Конструктор | Описание |
|---|---|
RemoteObjectInvocationHandler(RemoteRef ref) |
Создаёт новый |
Методы
| Модификатор и тип | Метод | Описание |
|---|---|---|
Object |
invoke(Object proxy,
Method method,
Object[] args) |
Обрабатывает вызов метода, сделанного на инкапсулированный экземпляр прокси, |
Методы, объявленные в классе java.rmi.server.RemoteObject
equals, getRef, hashCode, toString, toStub
Методы, объявленные в классе java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
Конструкторы
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наRemoteRefэтого обработчика вызовов, передаваяproxy,method,argsи хэш метода (определён в разделе 8.3 спецификации "Java Remote Method Invocation (RMI)"), и возвращается результат. - Если исключение выбрасывается
RemoteRef.invokeи это исключение является проверенным исключением, которое не может быть присвоено ни одному исключению в блокеthrowsкласса реализующего методproxy, то это исключение оборачивается вUnexpectedException, и оболоченное исключение выбрасывается. В противном случае, исключение, выброшенноеinvoke, выбрасывается этим методом.
Семантика этого метода не определена, если аргументы не могли быть получены экземпляром какого-либо допустимого класса динамического прокси, содержащего этот обработчик вызовов.
- Определено в:
-
invokeв интерфейсеInvocationHandler - Параметры:
-
proxy- экземпляр прокси, на котором был вызван метод -
method- экземплярMethod, соответствующий методу интерфейса, вызванному на экземпляре прокси -
args- массив объектов, содержащий значения аргументов, переданных в вызов метода на экземпляре прокси, илиnull, если метод не принимает аргументов - Возвращает:
- значение, возвращаемое из вызова метода на экземпляре прокси
- Исключения:
-
Throwable- исключение, которое нужно сгенерировать при вызове метода на экземпляре прокси - См. также:
UndeclaredThrowableException
© 1993, 2020, 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/11/docs/api/java.rmi/java/rmi/server/RemoteObjectInvocationHandler.html