Spec-Zone.ru › OpenJDK 27

Класс 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.

Если 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, это означает, что метод должен присутствовать в интерфейсе стандартного MBean или MXBean. В противном случае эти методы ведут себя следующим образом:

  • toString() возвращает строковое представление прокси
  • hashCode() возвращает хеш-код прокси, при этом у двух равных прокси одинаковые хеш-коды
  • equals(Object) возвращает true тогда и только тогда, когда аргумент Object принадлежит к тому же классу прокси, что и этот прокси, и связан с MBeanServerInvocationHandler, у которого те же MBeanServerConnection и ObjectName; если один из MBeanServerInvocationHandler был создан с аргументом Class, то для возврата true другой должен быть создан с тем же Class для equals.
Начиная с версии:
1.5

Краткое описание конструкторов

Конструктор Описание
MBeanServerInvocationHandler(MBeanServerConnection connection, ObjectName objectName)
Обработчик вызовов, который перенаправляет методы через сервер MBean к стандартному MBean.
MBeanServerInvocationHandler(MBeanServerConnection connection, ObjectName objectName, boolean isMXBean)
Обработчик вызовов, который может перенаправлять методы через сервер MBean к стандартному 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 с заданным именем.

Методы, объявленные в классе Object

clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Модификатор и тип Метод Описание
protected Object clone()
Создаёт и возвращает копию этого объекта.
boolean equals(Object obj)
Указывает, равен ли этот объект какому-либо другому объекту.
protected void finalize()
Устарело, будет удалено: этот элемент API может быть удалён в будущей версии.
Финализация устарела и будет удалена в одном из следующих выпусков.
final Class<?> getClass()
Возвращает класс времени выполнения этого Object.
int hashCode()
Возвращает значение хеш-кода для этого объекта.
final void notify()
Пробуждает один поток, ожидающий на мониторе этого объекта.
final void notifyAll()
Пробуждает все потоки, ожидающие на мониторе этого объекта.
String toString()
Возвращает строковое представление объекта.
final void wait()
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова notify или interrupt.
final void wait(long timeoutMillis)
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова notify или interrupt, либо до истечения заданного промежутка реального времени.
final void wait(long timeoutMillis, int nanos)
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова notify или interrupt, либо до истечения заданного промежутка реального времени.

Подробное описание конструкторов

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(NotificationListener, NotificationFilter, 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 может быть интерфейс прокси, один из его суперинтерфейсов или класс Object
args — массив объектов, содержащий значения аргументов, переданных при вызове метода экземпляра прокси, или null, если у вызванного метода нет аргументов. Аргументы примитивных типов упаковываются в экземпляры соответствующего класса-обёртки примитивного типа, например java.lang.Integer или java.lang.Boolean.
Возвращает:
значение, возвращаемое при вызове метода экземпляра прокси. Если объявленный тип возвращаемого значения вызванного метода является примитивным типом, возвращаемое этим методом значение должно быть экземпляром соответствующего класса-обёртки примитивного типа; в противном случае оно должно быть совместимо с объявленным типом возвращаемого значения. Если возвращаемое этим методом значение равно null, а тип возвращаемого значения вызванного метода является примитивным, при вызове метода экземпляра прокси будет выброшено исключение NullPointerException. Если возвращаемое этим методом значение несовместимо с объявленным типом возвращаемого значения вызванного метода, как описано выше, при вызове метода экземпляра прокси будет выброшено исключение ClassCastException.
Выбрасывает:
Throwable — исключение, выбрасываемое при вызове метода экземпляра прокси. Тип исключения должен быть совместим с одним из типов исключений, объявленных в предложении throws вызванного метода, либо с непроверяемыми типами исключений java.lang.RuntimeException или java.lang.Error. Если этот метод выбрасывает проверяемое исключение, несовместимое с любым из типов исключений, объявленных в предложении throws вызванного метода, при вызове метода экземпляра прокси будет выброшено исключение UndeclaredThrowableException, содержащее исключение, выброшенное этим методом.
См. также:
  • UndeclaredThrowableException

Сообщить об ошибке или предложить улучшение
Дополнительную справочную информацию по API и документацию для разработчиков см. в разделе Документация Java SE, содержащем более подробные описания для разработчиков, обзоры концепций, определения терминов, обходные решения и примеры работающего кода. Другие версии.
Java является товарным знаком или зарегистрированным товарным знаком Oracle и/или её аффилированных лиц в США и других странах.
Авторское право © 1993, 2026, Oracle и/или её аффилированные лица, 500 Oracle Parkway, Redwood Shores, CA 94065 USA.
Все права защищены. Использование регулируется условиями лицензии и политикой распространения документации.

© 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.

Spec-Zone.ru

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