Класс ManagementFactory
public class ManagementFactory extends Object
ManagementFactory — это фабричный класс для получения управляемых объектов для платформы Java. Этот класс состоит из статических методов, каждый из которых возвращает один или несколько платформенных MXBean, представляющих интерфейс управления компонентом виртуальной машины Java. Платформенные MXBean
Платформенный MXBean — это управляемый объект, соответствующий спецификации Instrumentation JMX и использующий только набор основных типов данных. Приложение управления JMX и сервер управления MBean могут взаимодействовать без необходимости использования классов для типов данных, специфичных для MXBean. Типы данных, передаваемые между сервером JMX-коннектора и клиентом-коннектором, — это открытые типы, что позволяет взаимодействие между версиями. Подробности см. в спецификации MXBean.
Каждый платформенный MXBean — это PlatformManagedObject и он имеет уникальное ObjectName для регистрации в платформенном MBeanServer , как возвращается методом getObjectName.
Приложение может получить доступ к платформенному MXBean следующими способами:
1. Прямой доступ к интерфейсу MXBean
- Получить экземпляр MXBean, вызвав метод
getPlatformMXBeanилиgetPlatformMXBeansи получить доступ к MXBean локально в работающей виртуальной машине.- Создать прокси-объект MXBean, который перенаправляет вызовы методов на заданный
MBeanServer, вызвав методgetPlatformMXBean(MBeanServerConnection, Class)илиgetPlatformMXBeans(MBeanServerConnection, Class). МетодnewPlatformMXBeanProxyтакже может использоваться для создания прокси-объекта MXBean заданногоObjectName. Прокси обычно создается для удаленного доступа к MXBean другой работающей виртуальной машины.2. Непрямой доступ к интерфейсу MXBean через MBeanServer
- Пройти через платформенный
MBeanServerдля доступа к MXBeans локально или к определенномуMBeanServerConnectionдля доступа к MXBeans удаленно. Атрибуты и операции MXBean используют только открытые типы JMX, которые включают базовые типы данных,CompositeDataиTabularData, определенные вOpenType. Подробности о сопоставлении см. в спецификации MXBean.
Метод getPlatformManagementInterfaces возвращает все поддерживаемые в виртуальной машине Java интерфейсы управления, включая стандартные интерфейсы управления, перечисленные в таблицах ниже, а также интерфейсы управления, расширенные реализацией JDK.
В виртуальной машине Java присутствует единственный экземпляр следующих интерфейсов управления:
В виртуальной машине Java может быть ноль или один экземпляр следующих интерфейсов управления.
| Интерфейс управления | Имя объекта |
|---|---|
CompilationMXBean | java.lang:type=Compilation
|
В виртуальной машине Java может быть один или несколько экземпляров следующих интерфейсов управления.
| Интерфейс управления | Имя объекта |
|---|---|
GarbageCollectorMXBean | java.lang:type=GarbageCollector,name=имя коллектора
|
MemoryManagerMXBean | java.lang:type=MemoryManager,name=имя менеджера
|
MemoryPoolMXBean | java.lang:type=MemoryPool,name=имя пула
|
BufferPoolMXBean | java.nio:type=BufferPool,name=имя пула
|
- Since:
- 1.5
- See Also:
Краткое описание полей
| Модификатор и тип | Поле | Описание |
|---|---|---|
static final String |
CLASS_LOADING_MXBEAN_NAME |
Строковое представление ObjectName для ClassLoadingMXBean. |
static final String |
COMPILATION_MXBEAN_NAME |
Строковое представление ObjectName для CompilationMXBean. |
static final String |
GARBAGE_COLLECTOR_MXBEAN_DOMAIN_TYPE |
Имя домена и ключевой тип свойства в ObjectName для GarbageCollectorMXBean. |
static final String |
MEMORY_MANAGER_MXBEAN_DOMAIN_TYPE |
Имя домена и ключевой тип свойства в ObjectName для MemoryManagerMXBean. |
static final String |
MEMORY_MXBEAN_NAME |
Строковое представление ObjectName для MemoryMXBean. |
static final String |
MEMORY_POOL_MXBEAN_DOMAIN_TYPE |
Имя домена и ключевой тип свойства в ObjectName для MemoryPoolMXBean. |
static final String |
OPERATING_SYSTEM_MXBEAN_NAME |
Строковое представление ObjectName для OperatingSystemMXBean. |
static final String |
RUNTIME_MXBEAN_NAME |
Строковое представление ObjectName для RuntimeMXBean. |
static final String |
THREAD_MXBEAN_NAME |
Строковое представление ObjectName для ThreadMXBean. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
static ClassLoadingMXBean |
getClassLoadingMXBean() |
Возвращает управляемый компонент для системы загрузки классов виртуальной машины Java. |
static CompilationMXBean |
getCompilationMXBean() |
Возвращает управляемый компонент для системы компиляции виртуальной машины Java. |
static List |
getGarbageCollectorMXBeans() |
Возвращает список объектов GarbageCollectorMXBean в виртуальной машине Java. |
static List |
getMemoryManagerMXBeans() |
Возвращает список объектов MemoryManagerMXBean в виртуальной машине Java. |
static MemoryMXBean |
getMemoryMXBean() |
Возвращает управляемый компонент для системы памяти виртуальной машины Java. |
static List |
getMemoryPoolMXBeans() |
Возвращает список объектов MemoryPoolMXBean в виртуальной машине Java. |
static OperatingSystemMXBean |
getOperatingSystemMXBean() |
Возвращает управляемый компонент для операционной системы, на которой работает виртуальная машина Java. |
static Set |
getPlatformManagementInterfaces() |
Возвращает набор объектов Class, подинтерфейсы PlatformManagedObject, представляющие все интерфейсы управления для мониторинга и управления платформой Java. |
static MBeanServer |
getPlatformMBeanServer() |
Возвращает платформенную MBeanServer. |
static <T extends PlatformManagedObject> |
getPlatformMXBean |
Возвращает платформенную MXBean, реализующую заданный mxbeanInterface, которая должна иметь единственный экземпляр в виртуальной машине Java. |
static <T extends PlatformManagedObject> |
getPlatformMXBean |
Возвращает платформенный прокси MXBean для mxbeanInterface, который должен иметь единственный экземпляр в виртуальной машине Java, и прокси будет пересылать вызовы методов через заданный MBeanServerConnection. |
static <T extends PlatformManagedObject> |
getPlatformMXBeans |
Возвращает список платформенных MXBean, реализующих заданный mxbeanInterface в виртуальной машине Java. |
static <T extends PlatformManagedObject> |
getPlatformMXBeans |
Возвращает список платформенных прокси MXBean для перенаправления вызовов методов mxbeanInterface через заданный MBeanServerConnection. |
static RuntimeMXBean |
getRuntimeMXBean() |
Возвращает управляемый компонент для системы выполнения виртуальной машины Java. |
static ThreadMXBean |
getThreadMXBean() |
Возвращает управляемый компонент для системы потоков виртуальной машины Java. |
static <T> T |
newPlatformMXBeanProxy |
Возвращает прокси для платформенного интерфейса MXBean заданного имени MXBean, который пересылает вызовы методов через заданный MBeanServerConnection. |
Подробное описание полей
CLASS_LOADING_MXBEAN_NAME
public static final String CLASS_LOADING_MXBEAN_NAME
ObjectName для ClassLoadingMXBean.- См. также:
COMPILATION_MXBEAN_NAME
public static final String COMPILATION_MXBEAN_NAME
ObjectName для CompilationMXBean.- См. также:
MEMORY_MXBEAN_NAME
public static final String MEMORY_MXBEAN_NAME
ObjectName для MemoryMXBean.- См. также:
OPERATING_SYSTEM_MXBEAN_NAME
public static final String OPERATING_SYSTEM_MXBEAN_NAME
ObjectName для OperatingSystemMXBean.- См. также:
RUNTIME_MXBEAN_NAME
public static final String RUNTIME_MXBEAN_NAME
ObjectName для RuntimeMXBean.- См. также:
THREAD_MXBEAN_NAME
public static final String THREAD_MXBEAN_NAME
ObjectName для ThreadMXBean.- См. также:
GARBAGE_COLLECTOR_MXBEAN_DOMAIN_TYPE
public static final String GARBAGE_COLLECTOR_MXBEAN_DOMAIN_TYPE
ObjectName для GarbageCollectorMXBean. Уникальное ObjectName для GarbageCollectorMXBean может быть сформировано путём добавления к этой строке ",name=имя сборщика".- См. также:
MEMORY_MANAGER_MXBEAN_DOMAIN_TYPE
public static final String MEMORY_MANAGER_MXBEAN_DOMAIN_TYPE
ObjectName для MemoryManagerMXBean. Уникальное ObjectName для MemoryManagerMXBean может быть сформировано путём добавления к этой строке ",name=имя менеджера".- См. также:
MEMORY_POOL_MXBEAN_DOMAIN_TYPE
public static final String MEMORY_POOL_MXBEAN_DOMAIN_TYPE
ObjectName для MemoryPoolMXBean. Уникальное ObjectName для MemoryPoolMXBean может быть сформировано путём добавления к этой строке ,name=имя пула.- См. также:
Подробное описание методов
getClassLoadingMXBean
public static ClassLoadingMXBean getClassLoadingMXBean()
- Возвращает:
- объект
ClassLoadingMXBeanдля виртуальной машины Java.
getMemoryMXBean
public static MemoryMXBean getMemoryMXBean()
- Возвращает:
- объект
MemoryMXBeanдля виртуальной машины Java.
getThreadMXBean
public static ThreadMXBean getThreadMXBean()
- Возвращает:
- объект
ThreadMXBeanдля виртуальной машины Java.
getRuntimeMXBean
public static RuntimeMXBean getRuntimeMXBean()
- Возвращает:
- объект
RuntimeMXBeanдля виртуальной машины Java.
getCompilationMXBean
public static CompilationMXBean getCompilationMXBean()
null если виртуальная машина Java не имеет системы компиляции.- Возвращает:
- объект
CompilationMXBeanдля виртуальной машины Java илиnullесли у виртуальной машины Java отсутствует система компиляции.
getOperatingSystemMXBean
public static OperatingSystemMXBean getOperatingSystemMXBean()
- Возвращает:
- объект
OperatingSystemMXBeanдля виртуальной машины Java.
getMemoryPoolMXBeans
public static List<MemoryPoolMXBean> getMemoryPoolMXBeans()
MemoryPoolMXBean в виртуальной машине Java. У виртуальной машины Java может быть один или несколько пулов памяти. Она может добавлять или удалять пулы памяти во время выполнения.- Возвращает:
- список объектов
MemoryPoolMXBean.
getMemoryManagerMXBeans
public static List<MemoryManagerMXBean> getMemoryManagerMXBeans()
MemoryManagerMXBean в виртуальной машине Java. У виртуальной машины Java может быть один или несколько менеджеров памяти. Она может добавлять или удалять менеджеров памяти во время выполнения.- Возвращает:
- список объектов
MemoryManagerMXBean.
getGarbageCollectorMXBeans
public static List<GarbageCollectorMXBean> getGarbageCollectorMXBeans()
GarbageCollectorMXBean в виртуальной машине Java. У виртуальной машины Java может быть один или несколько объектов GarbageCollectorMXBean. Она может добавлять или удалять GarbageCollectorMXBean во время выполнения.- Возвращает:
- список объектов
GarbageCollectorMXBean.
getPlatformMBeanServer
public static MBeanServer getPlatformMBeanServer()
MBeanServer. При первом вызове этого метода, он сначала создаёт платформенный MBeanServer, вызывая метод MBeanServerFactory.createMBeanServer, и регистрирует каждый платформенный MXBean в этом платформенном MBeanServer с его ObjectName. Этот метод в последующих вызовах просто вернёт первоначально созданный платформенный MBeanServer. MXBeans, которые динамически создаются и уничтожаются, например, пулы памяти pools и managers, будут автоматически зарегистрированы и дезактивированы в платформенном MBeanServer.
Если системная переменная javax.management.builder.initial установлена, создание платформенного MBeanServer будет выполнено заданным MBeanServerBuilder.
Рекомендуется использовать этот платформенный MBeanServer для регистрации других управляемых приложением бинов помимо платформенных MXBeans. Это позволит всем MBeans быть опубликованными через тот же MBeanServer и, следовательно, позволит более простое сетевое публикование и обнаружение. Столкновения имён с платформами MXBeans следует избегать.
- Возвращает:
- платформенный
MBeanServer; платформенные MXBeans регистрируются в платформенномMBeanServerпри первом вызове этого метода. - Использует:
-
SecurityException- если есть менеджер безопасности, и у вызывающего лица нет разрешения, требуемого методомMBeanServerFactory.createMBeanServer(). - См. также:
newPlatformMXBeanProxy
public static <T> T newPlatformMXBeanProxy(MBeanServerConnection connection, String mxbeanName, Class<T> mxbeanInterface) throws IOException
MBeanServerConnection. Этот метод эквивалентен:
гдеProxy.newProxyInstance(mxbeanInterface.getClassLoader(), new Class[] { mxbeanInterface }, handler)
handler является InvocationHandler, в который перенаправляются вызовы методов к интерфейсу MXBean. Этот handler преобразует входной параметр из типа данных MXBean в соответствующий открытый тип перед перенаправлением в MBeanServer, и преобразует возвращаемое значение из вызова метода MXBean через MBeanServer из открытого типа в соответствующий тип возвращаемого значения, объявленный в интерфейсе MXBean. Если MXBean является эмиттером уведомлений (т.е. он реализует NotificationEmitter), то как mxbeanInterface, так и NotificationEmitter будут реализованы этим прокси.
Примечания:
- Использование прокси MXBean - это удобный удалённый доступ к платформенному MXBean работающей виртуальной машины. Все вызовы методов прокси MXBean перенаправляются в
MBeanServerConnection, где может быть брошеноIOExceptionпри возникновении проблемы связи с сервером подключения. Если брошено,IOExceptionбудет обернут вUndeclaredThrowableException. Приложение, удалённо обращающееся к платформам MXBeans с использованием прокси, должно быть готово перехватитьUndeclaredThrowableExceptionи обработать его причину так, как будто эта причина была брошена самим интерфейсомMBeanServerConnection. - Когда приложение-клиент разработано для удалённого доступа к MXBeans для работающей виртуальной машины, версия которой отличается от версии, на которой запущено приложение, оно должно быть готово перехватить
InvalidObjectException, которое выбрасывается, когда прокси MXBean получает имя константы перечисления, отсутствующей в классе перечисления, загруженного в приложение-клиент. Если выбрасывается,InvalidObjectExceptionбудет обернут вUndeclaredThrowableException. -
MBeanServerInvocationHandlerили его методnewProxyInstanceне могут использоваться для создания прокси для платформенного MXBean. Объект прокси, созданныйMBeanServerInvocationHandler, не обрабатывает свойства платформа MXBeans, описанные в спецификации класса.
- Параметры типа:
-
T- параметр типаmxbeanInterface - Параметры:
-
connection-MBeanServerConnectionдля перенаправления. -
mxbeanName- имя платформенного MXBean вconnectionдля перенаправления.mxbeanNameдолжно быть в форматеObjectName. -
mxbeanInterface- интерфейс MXBean, который должен реализовывать прокси. - Возвращает:
- прокси для платформенного интерфейса MXBean с заданным именем MXBean, перенаправляющий вызовы методов через заданный
MBeanServerConnection, илиnullесли не существует. - Использует:
-
IllegalArgumentException- если-
mxbeanNameне соответствует валидномуObjectNameформату, или - названный MXBean в
connectionне является MXBean, предоставленным платформой, или - названный MXBean не зарегистрирован в
MBeanServerConnection, или - названный MXBean не является экземпляром заданного
mxbeanInterface
-
-
IOException- если произошла проблема связи при доступе кMBeanServerConnection.
getPlatformMXBean
public static <T extends PlatformManagedObject> T getPlatformMXBean(Class<T> mxbeanInterface)
mxbeanInterface, который должен иметь только один экземпляр в виртуальной машине Java. Этот метод может вернуть null если интерфейс управления не реализован в виртуальной машине Java (например, виртуальная машина Java без системы компиляции не реализует CompilationMXBean); в противном случае этот метод эквивалентен вызову:
getPlatformMXBeans(mxbeanInterface).get(0);
- Параметры типа:
-
T- параметр типаmxbeanInterface - Параметры:
-
mxbeanInterface- интерфейс управления для платформенного MXBean с единственным экземпляром в виртуальной машине Java, если реализован. - Возвращает:
- платформенный MXBean, реализующий
mxbeanInterface, илиnullесли не существует. - Использует:
-
IllegalArgumentException- еслиmxbeanInterfaceне является платформа интерфейсом управления или не является одиночным платформа MXBean. - С:
- 1.7
getPlatformMXBeans
public static <T extends PlatformManagedObject> List<T> getPlatformMXBeans(Class<T> mxbeanInterface)
mxbeanInterface в виртуальной машине Java. Возвращаемый список может содержать ноль, один или несколько экземпляров. Количество экземпляров в возвращаемом списке определяется в спецификации заданного интерфейса управления. Порядок не определён, и нет гарантии, что возвращаемый список будет в том же порядке, что и при предыдущих вызовах.- Параметры типа:
-
T- параметр типаmxbeanInterface - Параметры:
-
mxbeanInterface- интерфейс управления для платформенного MXBean - Возвращает:
- список платформа MXBeans, реализующих
mxbeanInterface. - Использует:
-
IllegalArgumentException- еслиmxbeanInterfaceне является платформа интерфейсом управления. - С:
- 1.7
getPlatformMXBean
public static <T extends PlatformManagedObject> T getPlatformMXBean(MBeanServerConnection connection, Class<T> mxbeanInterface) throws IOException
mxbeanInterface, который должен иметь единственный экземпляр в виртуальной машине Java, и прокси будет перенаправлять вызовы методов через заданный MBeanServerConnection. Этот метод может вернуть null, если интерфейс управления не реализован в отслеживаемой виртуальной машине Java (например, виртуальная машина Java без системы компиляции не реализует CompilationMXBean); в противном случае, этот метод эквивалентен вызову:
getPlatformMXBeans(connection, mxbeanInterface).get(0);
- Type Parameters:
-
T- параметр типаmxbeanInterface - Parameters:
-
connection-MBeanServerConnectionдля перенаправления. -
mxbeanInterface- интерфейс управления платформенным MXBean с единственным экземпляром в отслеживаемой виртуальной машине Java, если он реализован. - Returns:
- прокси-объект платформенного MXBean для перенаправления вызовов методов
mxbeanInterfaceчерез заданныйMBeanServerConnection, илиnull, если он не существует. - Throws:
-
IllegalArgumentException- еслиmxbeanInterfaceне является платформенным интерфейсом управления или не является одиночным платформенным MXBean. -
IOException- если произошла проблема с коммуникацией при доступе кMBeanServerConnection - Since:
- 1.7
- See Also:
getPlatformMXBeans
public static <T extends PlatformManagedObject> List<T> getPlatformMXBeans(MBeanServerConnection connection, Class<T> mxbeanInterface) throws IOException
mxbeanInterface через заданный MBeanServerConnection. Возвращаемый список может содержать ноль, один или несколько экземпляров. Количество экземпляров в возвращаемом списке определяется в спецификации заданного интерфейса управления. Порядок не определен, и нет гарантии, что возвращаемый список будет в том же порядке, что и при предыдущих вызовах.- Type Parameters:
-
T- параметр типаmxbeanInterface - Parameters:
-
connection-MBeanServerConnectionдля перенаправления. -
mxbeanInterface- интерфейс управления платформенным MXBean - Returns:
- список прокси-объектов платформенных MXBean для перенаправления вызовов методов
mxbeanInterfaceчерез заданныйMBeanServerConnection - Throws:
-
IllegalArgumentException- еслиmxbeanInterfaceне является платформенным интерфейсом управления. -
IOException- если произошла проблема с коммуникацией при доступе кMBeanServerConnection - Since:
- 1.7
- See Also:
getPlatformManagementInterfaces
public static Set<Class<? extends PlatformManagedObject>> getPlatformManagementInterfaces()
Class, подинтерфейсов PlatformManagedObject, представляющих все интерфейсы управления для мониторинга и управления платформой Java.- Returns:
- набор объектов
Class, подинтерфейсовPlatformManagedObject, представляющих интерфейсы управления для мониторинга и управления платформой Java. - Since:
- 1.7
© 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/java/lang/management/ManagementFactory.html