Класс RemoteObjectInvocationHandler
- java.lang.Object
-
- java.rmi.server.RemoteObject
-
- java.rmi.server.RemoteObjectInvocationHandler
- Все реализуемые интерфейсы:
- Serializable, InvocationHandler, Remote
public class RemoteObjectInvocationHandler extends RemoteObject implements InvocationHandler
Реализация интерфейса InvocationHandler для использования с Java Remote Method Invocation (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: Возвращает строковое представление прокси.
В противном случае вызов удаленного метода выполняется следующим образом:
- Если
proxyне является экземпляром интерфейсаRemote, то выбрасываетсяIllegalArgumentException. - В противном случае вызывается метод
invokeнаRemoteRefобработчика вызовов, передавая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- исключение, которое должно быть выброшено при вызове метода на экземпляре прокси - См. также:
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.