Spec-Zone.ru › OpenJDK 21

Класс 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 только в том случае, если аргумент Object является того же класса прокси, что и этот прокси, с MBeanServerInvocationHandler, имеющим тот же MBeanServerConnection и ObjectName; если один из MBeanServerInvocationHandler был создан с аргументом Class, то другой должен быть создан с тем же Class для equals возвратить true.
Since:
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 к стандартному 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 равно 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. Если брошено проверочное исключение этим методом, которое не приводимо ни к одному из типов исключений, объявленных в throws разделе интерфейсного метода, то UndeclaredThrowableException, содержащий исключение, брошенное этим методом, будет брошен вызовом метода на экземпляре прокси.
См. также:
  • UndeclaredThrowableException

© 1993, 2023, 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/21/docs/api/java.management/javax/management/MBeanServerInvocationHandler.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API