Класс MBeanServerInvocationHandler
- java.lang.Object
-
- javax.management.MBeanServerInvocationHandler
- Все реализуемые интерфейсы:
- InvocationHandler
public class MBeanServerInvocationHandler extends Object implements InvocationHandler
InvocationHandler, перенаправляющий методы интерфейса управления MBean через сервер управления MBean в сам MBean.
Используя подключение к MBeanServerConnection, ObjectName MBean внутри этого сервера управления MBean и Java-интерфейс Intf, описывающий интерфейс управления MBean, используя шаблоны для Standard MBean или MXBean, этот класс может быть использован для создания прокси-объекта для MBean. Прокси-объект реализует интерфейс Intf, так что все его методы перенаправляются через сервер управления MBean в сам MBean.
Если подключение InvocationHandler относится к MXBean, то параметры метода преобразуются из типа, объявленного в интерфейсе MXBean, в соответствующий отображенный тип, а возвращаемое значение преобразуется из отображенного типа в объявленный тип. Например, для метода
public List<String> reverse(List<String> list);
и если отображенный тип для List<String> — String[], вызов proxy.reverse(someList) преобразует someList из List<String> в String[], вызовет операцию MBean reverse, а затем преобразует возвращаемое значение String[] из List<String>.
Методы Object.toString(), Object.hashCode() или Object.equals(Object), вызванные на прокси-объекте с помощью этого обработчика вызовов, перенаправляются на сервер управления MBean как методы на проксируемом MBean, только если они присутствуют в одном из интерфейсов прокси. Для прокси, созданного с помощью JMX.newMBeanProxy или JMX.newMXBeanProxy, это означает, что метод должен быть в интерфейсе Standard MBean или MXBean. В противном случае эти методы ведут себя следующим образом:
- toString() возвращает строковое представление прокси
- hashCode() возвращает хэш-код для прокси таким образом, что два равных прокси имеют одинаковый хэш-код
- equals(Object) возвращает true только в том случае, если объект-аргумент относится к тому же классу прокси, что и этот прокси, с MBeanServerInvocationHandler, имеющим одинаковое MBeanServerConnection и ObjectName; если один из
MBeanServerInvocationHandlerбыл создан сClassаргументом, то другой должен быть создан с тем жеClassдляequalsвернуть true.
- С:
- 1.5
Конструкторы
| Конструктор и описание |
|---|
MBeanServerInvocationHandler(MBeanServerConnection connection,
ObjectName objectName) Обработчик вызовов, перенаправляющий методы через сервер управления MBean в Standard MBean. |
MBeanServerInvocationHandler(MBeanServerConnection connection,
ObjectName objectName,
boolean isMXBean) Обработчик вызовов, который может перенаправлять методы через сервер управления MBean в Standard MBean или MXBean. |
Методы
| Модификатор и тип | Метод и описание |
|---|---|
MBeanServerConnection |
getMBeanServerConnection() Подключение к серверу управления MBean, через которое методы прокси-объекта, использующего этот обработчик, перенаправляются. |
ObjectName |
getObjectName() Имя MBean внутри сервера управления MBean, в который перенаправляются методы. |
Object |
invoke(Object proxy,
Method method,
Object[] args) Обрабатывает вызов метода на экземпляре прокси-объекта и возвращает результат. |
boolean |
isMXBean() Если true, прокси-объект для MXBean, и применяются соответствующие отображения к параметрам метода и возвращаемым значениям. |
static <T> T |
newProxyInstance(MBeanServerConnection connection,
ObjectName objectName,
Class<T> interfaceClass,
boolean notificationBroadcaster) Возвращает прокси, который реализует данный интерфейс, перенаправляя его методы через данный сервер управления MBean к указанному MBean. |
Методы, унаследованные от класса java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait Конструкторы
MBeanServerInvocationHandler
public MBeanServerInvocationHandler(MBeanServerConnection connection,
ObjectName objectName) Обработчик вызовов, перенаправляющий методы через сервер MBean к Standard MBean. Этот конструктор можно использовать вместо JMX.newMBeanProxy, например, если нужно указать другой ClassLoader для Proxy.newProxyInstance.
Этот конструктор не подходит для MXBean. Используйте MBeanServerInvocationHandler(MBeanServerConnection,
ObjectName, boolean) для этого. Этот конструктор эквивалентен new MBeanServerInvocationHandler(connection,
objectName, false).
- Параметры:
-
connection- подключение к серверу MBean, через которое будут перенаправляться все методы прокси, использующего этот обработчик. -
objectName- имя MBean на сервере MBean, к которому будут перенаправляться методы.
MBeanServerInvocationHandler
public MBeanServerInvocationHandler(MBeanServerConnection connection,
ObjectName objectName,
boolean isMXBean) Обработчик вызовов, который может перенаправлять методы через сервер MBean к Standard MBean или MXBean. Этот конструктор можно вызвать вместо JMX.newMXBeanProxy, например, если нужно указать другой ClassLoader для Proxy.newProxyInstance.
- Параметры:
-
connection- подключение к серверу MBean, через которое будут перенаправляться все методы прокси, использующего этот обработчик. -
objectName- имя MBean на сервере MBean, к которому будут перенаправляться методы. -
isMXBean- если true, прокси предназначен дляMXBean, и будут применены соответствующие отображения к параметрам методов и возвращаемым значениям. - С:
- 1.6
Методы
getMBeanServerConnection
public MBeanServerConnection getMBeanServerConnection()
Подключение к серверу MBean, через которое методы прокси, использующего этот обработчик, перенаправляются.
- Возвращает:
- подключение к серверу MBean.
- С:
- 1.6
getObjectName
public ObjectName getObjectName()
Имя MBean на сервере MBean, к которому перенаправляются методы.
- Возвращает:
- имя объекта.
- С:
- 1.6
isMXBean
public boolean isMXBean()
Если true, прокси предназначен для MXBean, и к параметрам методов и возвращаемым значениям применяются соответствующие отображения.
- Возвращает:
- является ли прокси для MXBean.
- С:
- 1.6
newProxyInstance
public static <T> T newProxyInstance(MBeanServerConnection connection,
ObjectName objectName,
Class<T> interfaceClass,
boolean notificationBroadcaster) Возвращает прокси, реализующий данный интерфейс, перенаправляя его методы через указанный сервер MBean к названному MBean. Начиная с 1.6, методы JMX.newMBeanProxy(MBeanServerConnection, ObjectName, Class) и JMX.newMBeanProxy(MBeanServerConnection, ObjectName, Class,
boolean) предпочтительнее этого метода.
Этот метод эквивалентен Proxy.newProxyInstance(interfaceClass.getClassLoader(),
interfaces, handler). Здесь handler является результатом new
MBeanServerInvocationHandler(connection, objectName), а interfaces — массив, содержащий один элемент, если notificationBroadcaster равно false, и два, если оно равно true. Первый элемент interfaces — interfaceClass, а второй, если он присутствует, — NotificationEmitter.class.
- Параметры типа:
-
T- позволяет компилятору знать, что если параметрinterfaceClassравенMyMBean.class, например, то возвращаемый тип равенMyMBean. - Параметры:
-
connection- сервер MBean для перенаправления. -
objectName- имя MBean вconnectionдля перенаправления. -
interfaceClass- интерфейс управления, который экспортирует MBean, который также будет реализован возвращаемым прокси. -
notificationBroadcaster- заставить возвращаемый прокси реализоватьNotificationEmitter, перенаправляя его методы черезconnection. ВызовNotificationBroadcaster.addNotificationListener(javax.management.NotificationListener, javax.management.NotificationFilter, java.lang.Object)на прокси приведет к вызовуMBeanServerConnection.addNotificationListener(ObjectName, NotificationListener, NotificationFilter, Object), и аналогично для других методовNotificationBroadcasterиNotificationEmitter. - Возвращает:
- новый экземпляр прокси.
- См. также:
JMX.newMBeanProxy(MBeanServerConnection, ObjectName, Class, boolean)
invoke
public Object invoke(Object proxy,
Method method,
Object[] args)
throws Throwable Описание скопировано из интерфейса: InvocationHandler
Обрабатывает вызов метода на экземпляре прокси и возвращает результат. Этот метод будет вызван на обработчике вызовов, когда метод вызывается на экземпляре прокси, с которым он связан.
- Определено в:
-
invokeв интерфейсеInvocationHandler - Параметры:
-
proxy- экземпляр прокси, на котором был вызван метод -
method- экземплярMethod, соответствующий интерфейсному методу, вызванному на экземпляре прокси. Класс объявления объектаMethodбудет интерфейсом, в котором был объявлен метод, который может быть суперинтерфейсом интерфейса прокси, который класс прокси наследует метод через. -
args- массив объектов, содержащий значения аргументов, переданных в вызов метода на экземпляре прокси, илиnull, если интерфейсный метод не принимает аргументов. Аргументы примитивных типов оборачиваются в экземпляры соответствующего класса оболочки примитивного типа, например,java.lang.Integerилиjava.lang.Boolean. - Возвращает:
- значение, которое должно быть возвращено из вызова метода на экземпляре прокси. Если объявленный возвращаемый тип интерфейсного метода является примитивным типом, то возвращаемое этим методом значение должно быть экземпляром соответствующего класса оболочки примитивного типа; в противном случае оно должно быть типом, присваиваемым объявленному возвращаемому типу. Если значение, возвращаемое этим методом, равно
nullи возвращаемый тип интерфейсного метода является примитивным, то метод вызова на экземпляре прокси выброситNullPointerException. Если возвращаемое этим методом значение по другим причинам несовместимо с объявленным возвращаемым типом интерфейсного метода, как описано выше, вызов метода на экземпляре прокси выброситClassCastException. - Бросает:
-
Throwable- исключение, которое следует бросить при вызове метода на экземпляре прокси. Тип исключения должен быть присваиваем любому из типов исключений, объявленных вthrowsразделе интерфейсного метода, или к необрабатываемым типам исключенийjava.lang.RuntimeExceptionилиjava.lang.Error. Если этот метод выбросит checked исключение, которое не присваивается ни одному из типов исключений, объявленных вthrowsразделе интерфейсного метода, то будет брошенUndeclaredThrowableException, содержащий исключение, которое было выброшено этим методом, при вызове метода на экземпляре прокси. - См. также:
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.