Класс 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 только если аргумент Object является прокси того же класса, что и этот прокси, с MBeanServerInvocationHandler, имеющим тот же MBeanServerConnection и ObjectName; если один из
MBeanServerInvocationHandlerбыл создан сClassаргументом, то другой должен быть создан с тем жеClass, чтобыequalsвернул true.
- Since:
- 1.5
Краткое описание конструкторов
| Конструктор | Описание |
|---|---|
MBeanServerInvocationHandler |
Обработчик вызовов, который перенаправляет методы через сервер MBean на Standard MBean. |
MBeanServerInvocationHandler |
Обработчик вызовов, который может перенаправлять методы через сервер MBean на Standard MBean или MXBean. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
MBeanServerConnection |
getMBeanServerConnection() |
Подключение к серверу MBean, через которое методы прокси, использующего этот обработчик, перенаправляются. |
ObjectName |
getObjectName() |
Имя MBean на сервере MBean, на который перенаправляются методы. |
Object |
invoke |
Обрабатывает вызов метода на экземпляре прокси и возвращает результат. |
boolean |
isMXBean() |
Если true, прокси предназначен для MXBean, и к параметрам метода и возвращаемым значениям применяются соответствующие отображения. |
static <T> T |
newProxyInstance |
Возвращает прокси, который реализует заданный интерфейс, перенаправляя его методы через указанный сервер MBean к указанному MBean. |
Подробное описание конструкторов
MBeanServerInvocationHandler
public MBeanServerInvocationHandler(MBeanServerConnection connection, ObjectName objectName)
Обработчик вызовов, перенаправляющий методы через сервер MBean к стандартному 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 к стандартному 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 ложно, и два, если истинно. Первый элемент 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. - Возвращает:
- новый экземпляр прокси.
- См. также:
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. Если этим методом брошено проверяемое исключение, которое не присваивается ни одному из типов исключений, объявленных в блокеthrowsинтерфейсного метода, тоUndeclaredThrowableException, содержащий брошенное исключение этим методом, будет брошено вызовом метода на экземпляре прокси. - См. также:
© 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.
https://download.java.net/java/early_access/jdk24/docs/api/java.management/javax/management/MBeanServerInvocationHandler.html