ManagementFactory
类是用于获取Java平台管理Bean的工厂类。该类由一组静态方法组成,每个方法返回一个或多个代表Java虚拟机组件管理接口的平台MXBeans。
平台MXBeans
平台MXBean是符合JMX仪器规范的管理Bean,仅使用一组基本数据类型。JMX管理应用程序和平台MBeanServer可以在不需要MXBean特定数据类型的类的情况下进行互操作。在JMX连接器服务器和连接器客户端之间传输的数据类型是开放类型,这允许跨版本进行互操作。有关详细信息,请参阅MXBeans规范。
每个平台MXBean都是一个PlatformManagedObject
,并且具有一个唯一的ObjectName
,用于在平台MBeanServer
中注册,由getObjectName
方法返回。
应用程序可以通过以下方式访问平台MXBean:
1. 直接访问MXBean接口
- 通过调用
getPlatformMXBean
或getPlatformMXBeans
方法获取MXBean实例,并在运行的虚拟机中本地访问MXBean。- 通过调用
getPlatformMXBean(MBeanServerConnection, Class)
或getPlatformMXBeans(MBeanServerConnection, Class)
方法构造一个MXBean代理实例,将方法调用转发给给定的MBeanServer
。也可以使用newPlatformMXBeanProxy
方法构造给定ObjectName
的MXBean代理实例。代理通常用于远程访问另一个运行的虚拟机中的MXBean。2. 通过MBeanServer间接访问MXBean接口
- 通过平台
MBeanServer
访问本地MXBeans或特定MBeanServerConnection
访问远程MXBeans。MXBean的属性和操作仅使用JMX开放类型,包括基本数据类型,CompositeData
和TabularData
在OpenType
中定义。映射在MXBean规范中指定了详细信息。
getPlatformManagementInterfaces
方法返回Java虚拟机中支持的所有管理接口,包括下表中列出的标准管理接口以及JDK实现扩展的管理接口。
Java虚拟机具有以下管理接口的单个实例:
Java虚拟机具有以下管理接口的零个或单个实例。
管理接口 | ObjectName |
---|---|
CompilationMXBean |
java.lang:type=Compilation |
Java虚拟机可能具有以下管理接口的一个或多个实例。
管理接口 | ObjectName |
---|---|
GarbageCollectorMXBean |
java.lang:type=GarbageCollector ,name= 收集器名称 |
MemoryManagerMXBean |
java.lang:type=MemoryManager ,name= 管理器名称 |
MemoryPoolMXBean |
java.lang:type=MemoryPool ,name= 池名称 |
BufferPoolMXBean |
java.nio:type=BufferPool,name= 池名称 |
- 自:
- 1.5
- 参见:
-
Field Summary
Modifier and TypeFieldDescriptionstatic final String
ObjectName
的字符串表示形式,用于ClassLoadingMXBean
。static final String
ObjectName
的字符串表示形式,用于CompilationMXBean
。static final String
GarbageCollectorMXBean
的ObjectName
中的域名和类型键属性的字符串表示形式。static final String
MemoryManagerMXBean
的ObjectName
中的域名和类型键属性的字符串表示形式。static final String
ObjectName
的字符串表示形式,用于MemoryMXBean
。static final String
MemoryPoolMXBean
的ObjectName
中的域名和类型键属性的字符串表示形式。static final String
ObjectName
的字符串表示形式,用于OperatingSystemMXBean
。static final String
ObjectName
的字符串表示形式,用于RuntimeMXBean
。static final String
ObjectName
的字符串表示形式,用于ThreadMXBean
。 -
Method Summary
Modifier and TypeMethodDescriptionstatic ClassLoadingMXBean
返回Java虚拟机的类加载系统的管理Bean。static CompilationMXBean
返回Java虚拟机的编译系统的管理Bean。static List
<GarbageCollectorMXBean> 返回Java虚拟机中的GarbageCollectorMXBean
对象列表。static List
<MemoryManagerMXBean> 返回Java虚拟机中的MemoryManagerMXBean
对象列表。static MemoryMXBean
返回Java虚拟机的内存系统的管理Bean。static List
<MemoryPoolMXBean> 返回Java虚拟机中的MemoryPoolMXBean
对象列表。static OperatingSystemMXBean
返回Java虚拟机正在运行的操作系统的管理Bean。static Set
<Class<? extends PlatformManagedObject>> 返回表示用于监视和管理Java平台的所有管理接口的Class
对象集合,它是PlatformManagedObject
的子接口。static MBeanServer
返回平台MBeanServer
。static <T extends PlatformManagedObject>
TgetPlatformMXBean
(Class<T> mxbeanInterface) 返回实现给定mxbeanInterface
的平台MXBean,该接口在Java虚拟机中被指定为具有单个实例。static <T extends PlatformManagedObject>
TgetPlatformMXBean
(MBeanServerConnection connection, Class<T> mxbeanInterface) 返回mxbeanInterface
的平台MXBean代理,该接口在Java虚拟机中被指定为具有单个实例,并且代理将通过给定的MBeanServerConnection
转发方法调用。static <T extends PlatformManagedObject>
List<T> getPlatformMXBeans
(Class<T> mxbeanInterface) 返回在Java虚拟机中实现给定mxbeanInterface
的平台MXBean列表。static <T extends PlatformManagedObject>
List<T> getPlatformMXBeans
(MBeanServerConnection connection, Class<T> mxbeanInterface) 返回用于通过给定MBeanServerConnection
转发mxbeanInterface
的方法调用的平台MXBean代理列表。static RuntimeMXBean
返回Java虚拟机的运行时系统的托管bean。static ThreadMXBean
返回Java虚拟机的线程系统的托管bean。static <T> T
newPlatformMXBeanProxy
(MBeanServerConnection connection, String mxbeanName, Class<T> mxbeanInterface) 返回给定MXBean名称的平台MXBean接口的代理,通过给定的MBeanServerConnection
转发其方法调用。
-
Field Details
-
CLASS_LOADING_MXBEAN_NAME
ClassLoadingMXBean
的ObjectName
的字符串表示。- 参见:
-
COMPILATION_MXBEAN_NAME
CompilationMXBean
的ObjectName
的字符串表示。- 参见:
-
MEMORY_MXBEAN_NAME
MemoryMXBean
的ObjectName
的字符串表示。- 参见:
-
OPERATING_SYSTEM_MXBEAN_NAME
OperatingSystemMXBean
的ObjectName
的字符串表示。- 参见:
-
RUNTIME_MXBEAN_NAME
RuntimeMXBean
的ObjectName
的字符串表示。- 参见:
-
THREAD_MXBEAN_NAME
ThreadMXBean
的ObjectName
的字符串表示。- 参见:
-
GARBAGE_COLLECTOR_MXBEAN_DOMAIN_TYPE
GarbageCollectorMXBean
的ObjectName
的域名和类型键属性。一个GarbageCollectorMXBean
的唯一ObjectName
可以通过将此字符串与",name=
收集器名称"连接而形成。- 参见:
-
MEMORY_MANAGER_MXBEAN_DOMAIN_TYPE
MemoryManagerMXBean
的ObjectName
的域名和类型键属性。一个MemoryManagerMXBean
的唯一ObjectName
可以通过将此字符串与",name=
管理器名称"连接而形成。- 参见:
-
MEMORY_POOL_MXBEAN_DOMAIN_TYPE
MemoryPoolMXBean
的ObjectName
的域名和类型键属性。一个MemoryPoolMXBean
的唯一ObjectName
可以通过将此字符串与,name=
池名称连接而形成。- 参见:
-
-
Method Details
-
getClassLoadingMXBean
返回Java虚拟机的类加载系统的托管bean。- 返回:
-
用于Java虚拟机的
ClassLoadingMXBean
对象。
-
getMemoryMXBean
返回Java虚拟机的内存系统的托管bean。- 返回:
-
用于Java虚拟机的
MemoryMXBean
对象。
-
getThreadMXBean
返回Java虚拟机的线程系统的托管bean。- 返回:
-
用于Java虚拟机的
ThreadMXBean
对象。
-
getRuntimeMXBean
返回Java虚拟机的运行时系统的托管bean。- 返回:
-
用于Java虚拟机的
RuntimeMXBean
对象。
-
getCompilationMXBean
返回Java虚拟机的编译系统的托管bean。如果Java虚拟机没有编译系统,则此方法返回null
。- 返回:
-
用于Java虚拟机的
CompilationMXBean
对象,如果Java虚拟机没有编译系统,则返回null
。
-
getOperatingSystemMXBean
返回Java虚拟机正在运行的操作系统的托管bean。- 返回:
-
用于Java虚拟机的
OperatingSystemMXBean
对象。
-
getMemoryPoolMXBeans
返回Java虚拟机中的MemoryPoolMXBean
对象列表。Java虚拟机可以拥有一个或多个内存池,在执行过程中可能会添加或删除内存池。- 返回:
-
一个
MemoryPoolMXBean
对象列表。
-
getMemoryManagerMXBeans
返回Java虚拟机中的MemoryManagerMXBean
对象列表。Java虚拟机可以拥有一个或多个内存管理器,在执行过程中可能会添加或删除内存管理器。- 返回:
-
一个
MemoryManagerMXBean
对象列表。
-
getGarbageCollectorMXBeans
返回Java虚拟机中的GarbageCollectorMXBean
对象列表。Java虚拟机可能拥有一个或多个GarbageCollectorMXBean
对象,在执行过程中可能会添加或删除GarbageCollectorMXBean
。- 返回:
-
一个
GarbageCollectorMXBean
对象列表。
-
getPlatformMBeanServer
返回平台MBeanServer
。在第一次调用此方法时,它首先通过调用MBeanServerFactory.createMBeanServer
方法创建平台MBeanServer
,并将每个平台MXBean注册到此平台MBeanServer
中,带有其ObjectName
。在随后的调用中,此方法将简单地返回最初创建的平台MBeanServer
。动态创建和销毁的MXBeans,例如内存
池
和管理器
,将自动注册和注销到平台MBeanServer
中。如果设置了系统属性
javax.management.builder.initial
,平台MBeanServer
的创建将由指定的MBeanServerBuilder
完成。建议除了平台MXBeans之外,还应使用此平台MBeanServer来注册其他应用程序托管的bean。这将允许通过相同的
MBeanServer
发布和发现所有MBeans,从而更容易进行网络发布和发现。应避免与平台MXBeans的名称冲突。- Returns:
-
the platform
MBeanServer
; the platform MXBeans are registered into the platformMBeanServer
at the first time this method is called. - Throws:
-
SecurityException
- if there is a security manager and the caller does not have the permission required byMBeanServerFactory.createMBeanServer()
. - See Also:
-
newPlatformMXBeanProxy
public static <T> T newPlatformMXBeanProxy(MBeanServerConnection connection, String mxbeanName, Class<T> mxbeanInterface) throws IOException Returns a proxy for a platform MXBean interface of a given MXBean name that forwards its method calls through the givenMBeanServerConnection
.This method is equivalent to:
Proxy.newProxyInstance
(mxbeanInterface.getClassLoader(), new Class[] { mxbeanInterface }, handler)
handler
is anInvocationHandler
to which method invocations to the MXBean interface are dispatched. Thishandler
converts an input parameter from an MXBean data type to its mapped open type before forwarding to theMBeanServer
and converts a return value from an MXBean method call through theMBeanServer
from an open type to the corresponding return type declared in the MXBean interface.If the MXBean is a notification emitter (i.e., it implements
NotificationEmitter
), both themxbeanInterface
andNotificationEmitter
will be implemented by this proxy.Notes:
- Using an MXBean proxy is a convenience remote access to a platform MXBean of a running virtual machine. All method calls to the MXBean proxy are forwarded to an
MBeanServerConnection
whereIOException
may be thrown when the communication problem occurs with the connector server. If thrown,IOException
will be wrappped inUndeclaredThrowableException
. An application remotely accessing the platform MXBeans using proxy should prepare to catchUndeclaredThrowableException
and handle its cause as if that cause had been thrown by theMBeanServerConnection
interface. - When a client application is designed to remotely access MXBeans for a running virtual machine whose version is different than the version on which the application is running, it should prepare to catch
InvalidObjectException
which is thrown when an MXBean proxy receives a name of an enum constant which is missing in the enum class loaded in the client application. If thrown,InvalidObjectException
will be wrappped inUndeclaredThrowableException
. MBeanServerInvocationHandler
or itsnewProxyInstance
method cannot be used to create a proxy for a platform MXBean. The proxy object created byMBeanServerInvocationHandler
does not handle the properties of the platform MXBeans described in the class specification.
- Type Parameters:
-
T
- anmxbeanInterface
type parameter - Parameters:
-
connection
- theMBeanServerConnection
to forward to. -
mxbeanName
- the name of a platform MXBean withinconnection
to forward to.mxbeanName
must be in the format ofObjectName
. -
mxbeanInterface
- the MXBean interface to be implemented by the proxy. - Returns:
-
a proxy for a platform MXBean interface of a given MXBean name that forwards its method calls through the given
MBeanServerConnection
, ornull
if not exist. - Throws:
-
IllegalArgumentException
- ifmxbeanName
is not with a validObjectName
format, or- the named MXBean in the
connection
is not a MXBean provided by the platform, or - the named MXBean is not registered in the
MBeanServerConnection
, or - the named MXBean is not an instance of the given
mxbeanInterface
-
IOException
- if a communication problem occurred when accessing theMBeanServerConnection
.
- Using an MXBean proxy is a convenience remote access to a platform MXBean of a running virtual machine. All method calls to the MXBean proxy are forwarded to an
-
getPlatformMXBean
Returns the platform MXBean implementing the givenmxbeanInterface
which is specified to have one single instance in the Java virtual machine. This method may returnnull
if the management interface is not implemented in the Java virtual machine (for example, a Java virtual machine with no compilation system does not implementCompilationMXBean
); otherwise, this method is equivalent to calling:getPlatformMXBeans(mxbeanInterface)
.get(0);- Type Parameters:
-
T
- anmxbeanInterface
type parameter - Parameters:
-
mxbeanInterface
- a management interface for a platform MXBean with one single instance in the Java virtual machine if implemented. - Returns:
-
the platform MXBean that implements
mxbeanInterface
, ornull
if not exist. - Throws:
-
IllegalArgumentException
- ifmxbeanInterface
is not a platform management interface or not a singleton platform MXBean. - Since:
- 1.7
-
getPlatformMXBeans
public static <T extends PlatformManagedObject> List<T> getPlatformMXBeans(Class<T> mxbeanInterface) Returns the list of platform MXBeans implementing the givenmxbeanInterface
in the Java virtual machine. The returned list may contain zero, one, or more instances. The number of instances in the returned list is defined in the specification of the given management interface. The order is undefined and there is no guarantee that the list returned is in the same order as previous invocations.- Type Parameters:
-
T
- anmxbeanInterface
type parameter - Parameters:
-
mxbeanInterface
- a management interface for a platform MXBean - Returns:
-
the list of platform MXBeans that implement
mxbeanInterface
. - Throws:
-
IllegalArgumentException
- ifmxbeanInterface
is not a platform management interface. - Since:
- 1.7
-
getPlatformMXBean
public static <T extends PlatformManagedObject> T getPlatformMXBean(MBeanServerConnection connection, Class<T> mxbeanInterface) throws IOException Returns the platform MXBean proxy formxbeanInterface
which is specified to have one single instance in a Java virtual machine and the proxy will forward the method calls through the givenMBeanServerConnection
. This method may returnnull
if the management interface is not implemented in the Java virtual machine being monitored (for example, a Java virtual machine with no compilation system does not implementCompilationMXBean
); otherwise, this method is equivalent to calling:getPlatformMXBeans(connection, mxbeanInterface)
.get(0);- Type Parameters:
-
T
- anmxbeanInterface
type parameter - Parameters:
-
connection
- theMBeanServerConnection
to forward to. -
mxbeanInterface
- a management interface for a platform MXBean with one single instance in the Java virtual machine being monitored, if implemented. - Returns:
-
the platform MXBean proxy for forwarding the method calls of the
mxbeanInterface
through the givenMBeanServerConnection
, ornull
if not exist. - Throws:
-
IllegalArgumentException
- ifmxbeanInterface
is not a platform management interface or not a singleton platform MXBean. -
IOException
- if a communication problem occurred when accessing theMBeanServerConnection
. - Since:
- 1.7
- See Also:
-
getPlatformMXBeans
public static <T extends PlatformManagedObject> List<T> getPlatformMXBeans(MBeanServerConnection connection, Class<T> mxbeanInterface) throws IOException 返回通过给定的MBeanServerConnection
转发mxbeanInterface
方法调用的平台MXBean代理列表。返回的列表可能包含零个、一个或多个实例。返回列表中的实例数量在给定管理接口的规范中定义。顺序是未定义的,并且不能保证返回的列表与先前调用的顺序相同。- 类型参数:
-
T
- 一个mxbeanInterface
类型参数 - 参数:
-
connection
- 要转发到的MBeanServerConnection
。 -
mxbeanInterface
- 用于平台MXBean的管理接口 - 返回:
-
通过给定的
MBeanServerConnection
转发mxbeanInterface
方法调用的平台MXBean代理列表。 - 抛出:
-
IllegalArgumentException
- 如果mxbeanInterface
不是平台管理接口。 -
IOException
- 如果访问MBeanServerConnection
时发生通信问题。 - 自版本:
- 1.7
- 参见:
-
getPlatformManagementInterfaces
返回Class
对象的集合,这些对象是PlatformManagedObject
的子接口,表示用于监视和管理Java平台的所有管理接口。- 返回:
-
表示用于监视和管理Java平台的所有管理接口的
Class
对象的集合,这些对象是PlatformManagedObject
的子接口。 - 自版本:
- 1.7
-