Класс RemoteObjectInvocationHandler
- Все реализуемые интерфейсы:
Serializable, InvocationHandler, Remote
public class RemoteObjectInvocationHandler extends RemoteObject implements InvocationHandler
InvocationHandler для использования с вызовом удалённых методов Java (Java RMI). Этот обработчик вызовов можно использовать вместе с экземпляром динамического прокси вместо предварительно сгенерированного класса заглушки. Предполагается, что приложения не будут использовать этот класс напрямую. У удалённого объекта, экспортированного для использования динамического прокси с помощью UnicastRemoteObject, экземпляр этого класса является обработчиком вызовов данного прокси.
- Начиная с:
- 1.5
- См. также:
Краткое описание полей
Поля, объявленные в классе RemoteObject
ref | Модификатор и тип | Поле | Описание |
|---|---|---|
protected RemoteRef |
ref |
Удалённая ссылка объекта. |
Краткое описание конструкторов
| Конструктор | Описание |
|---|---|
RemoteObjectInvocationHandler |
Создаёт новый RemoteObjectInvocationHandler, сконструированный с указанным RemoteRef. |
Краткое описание методов
Методы, объявленные в классе RemoteObject
equals, getRef, hashCode, toString, toStub | Модификатор и тип | Метод | Описание |
|---|---|---|
boolean |
equals |
Сравнивает два удалённых объекта на равенство. |
RemoteRef |
getRef() |
Возвращает удалённую ссылку на удалённый объект. |
int |
hashCode() |
Возвращает хеш-код удалённого объекта. |
String |
toString() |
Возвращает строку, представляющую значение этого удалённого объекта. |
static Remote |
toStub |
Возвращает заглушку для удалённого объекта 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 |
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова notify или interrupt, либо истечения определённого промежутка реального времени. |
final void |
wait |
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова 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— исключение, которое следует выбросить при вызове метода для экземпляра прокси - См. также:
© 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.