Класс 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, используя шаблоны для стандартного MBean или MXBean, этот класс может быть использован для создания прокси для MBean. Прокси реализует интерфейс Intf, таким образом, что все его методы передаются через сервер MBean на MBean.
Если прокси предназначен для 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, если и только если аргумент Object принадлежит тому же классу прокси, что и этот прокси, с MBeanServerInvocationHandler, имеющим то же MBeanServerConnection и ObjectName; если один из
MBeanServerInvocationHandlerбыл создан с аргументомClass, то другой также должен быть создан с тем жеClassдляequals, чтобы вернуть true.
- C момента:
- 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, на который перенаправляются методы. |
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
Методы, объявленные в интерфейсе java.lang.reflect.InvocationHandler
invoke
Конструкторы
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, и будут применены соответствующие отображения к параметрам и возвращаемым значениям методов. - C момента:
- 1.6
Методы
getMBeanServerConnection
public MBeanServerConnection getMBeanServerConnection()
Подключение к серверу MBean, через которое методы прокси, использующего этот обработчик, перенаправляются.
- Возвращает:
- подключение к серверу MBean.
- C момента:
- 1.6
getObjectName
public ObjectName getObjectName()
Имя MBean на сервере MBean, на который перенаправляются методы.
- Возвращает:
- имя объекта.
- C момента:
- 1.6
isMXBean
public boolean isMXBean()
Если true, прокси предназначен для MXBean, и применяются соответствующие отображения к параметрам и возвращаемым значениям методов.
- Возвращает:
- является ли прокси MXBean.
- C момента:
- 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)
© 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.management/javax/management/MBeanServerInvocationHandler.html