public class ManagementFactory extends Object
ManagementFactory
类是用于获取Java平台的受管Bean的工厂类。
该类由静态方法组成,每个方法返回一个或多个表示Java虚拟机组件的管理接口的平台MXBeans 。
平台MXBean是符合JMX仪器规范的托管bean ,仅使用一组基本数据类型。 JMX管理应用程序和platform MBeanServer可以互操作,而不需要MXBean特定数据类型的类。 JMX连接服务器和客户端的连接器之间传输的数据类型是open types并且这允许跨版本互操作。 详见the specification of MXBeans 。
每个平台MXBean是PlatformManagedObject
,它有一个独特的ObjectName
登记在平台MBeanServer
由返回通过getObjectName
方法。
应用程序可以通过以下方式访问平台MXBean:
- Get an MXBean instance by calling the
getPlatformMXBean
orgetPlatformMXBeans
method and access the MXBean locally in the running virtual machine.- Construct an MXBean proxy instance that forwards the method calls to a given
MBeanServer
by calling thegetPlatformMXBean(MBeanServerConnection, Class)
orgetPlatformMXBeans(MBeanServerConnection, Class)
method. ThenewPlatformMXBeanProxy
method can also be used to construct an MXBean proxy instance of a givenObjectName
. A proxy is typically constructed to remotely access an MXBean of another running virtual machine.2. Indirect access to an MXBean interface via MBeanServer
- Go through the platform
MBeanServer
to access MXBeans locally or a specific MBeanServerConnection to access MXBeans remotely. The attributes and operations of an MXBean use only JMX open types which include basic data types,CompositeData
, andTabularData
defined inOpenType
. The mapping is specified in the MXBean specification for details.
getPlatformManagementInterfaces
方法返回Java虚拟机中支持的所有管理接口,包括下表中列出的标准管理界面以及由JDK实现扩展的管理接口。
Java虚拟机具有以下管理接口的单个实例:
Java虚拟机具有以下管理界面的零个或单个实例。
Management Interface ObjectName CompilationMXBean
java.lang:type=Compilation
Java虚拟机可能具有以下管理接口的一个或多个实例。
Management Interface ObjectName GarbageCollectorMXBean
java.lang:type=GarbageCollector
,name=collector's nameMemoryManagerMXBean
java.lang:type=MemoryManager
,name=manager's nameMemoryPoolMXBean
java.lang:type=MemoryPool
,name=pool's nameBufferPoolMXBean
java.nio:type=BufferPool,name=
pool name
MXBean
Modifier and Type | Field and Description |
---|---|
static String |
CLASS_LOADING_MXBEAN_NAME
该ObjectName为的字符串表示 ClassLoadingMXBean 。
|
static String |
COMPILATION_MXBEAN_NAME
该ObjectName为的字符串表示 CompilationMXBean 。
|
static String |
GARBAGE_COLLECTOR_MXBEAN_DOMAIN_TYPE
ObjectName的域名和类型密钥属性为 GarbageCollectorMXBean 。
|
static String |
MEMORY_MANAGER_MXBEAN_DOMAIN_TYPE
ObjectName的域名和类型密钥属性为 MemoryManagerMXBean 。
|
static String |
MEMORY_MXBEAN_NAME
该ObjectName为的字符串表示 MemoryMXBean 。
|
static String |
MEMORY_POOL_MXBEAN_DOMAIN_TYPE
ObjectName的域名和类型密钥属性为 MemoryPoolMXBean 。
|
static String |
OPERATING_SYSTEM_MXBEAN_NAME
该ObjectName为的字符串表示 OperatingSystemMXBean 。
|
static String |
RUNTIME_MXBEAN_NAME
该ObjectName为的字符串表示 RuntimeMXBean 。
|
static String |
THREAD_MXBEAN_NAME
该ObjectName为的字符串表示 ThreadMXBean 。
|
Modifier and Type | Method and Description |
---|---|
static ClassLoadingMXBean |
getClassLoadingMXBean()
返回Java虚拟机的类加载系统的托管bean。
|
static CompilationMXBean |
getCompilationMXBean()
返回Java虚拟机编译系统的受管Bean。
|
static List<GarbageCollectorMXBean> |
getGarbageCollectorMXBeans()
返回Java虚拟机中的 GarbageCollectorMXBean 对象的列表。
|
static List<MemoryManagerMXBean> |
getMemoryManagerMXBeans()
返回Java虚拟机中的 MemoryManagerMXBean 对象的列表。
|
static MemoryMXBean |
getMemoryMXBean()
返回Java虚拟机的内存系统的托管bean。
|
static List<MemoryPoolMXBean> |
getMemoryPoolMXBeans()
返回Java虚拟机中的 MemoryPoolMXBean 对象的列表。
|
static OperatingSystemMXBean |
getOperatingSystemMXBean()
返回运行Java虚拟机的操作系统的托管bean。
|
static Set<类<? extends PlatformManagedObject>> |
getPlatformManagementInterfaces()
返回 类 对象的集合,子接口PlatformManagedObject ,代表用于监视和管理Java平台的所有管理接口。
|
static MBeanServer |
getPlatformMBeanServer()
返回平台 MBeanServer 。
|
static <T extends PlatformManagedObject> |
getPlatformMXBean(类<T> mxbeanInterface)
返回实现给定的
mxbeanInterface 的平台MXBean,该对象被指定为在Java虚拟机中具有一个实例。
|
static <T extends PlatformManagedObject> |
getPlatformMXBean(MBeanServerConnection connection, 类<T> mxbeanInterface)
返回
mxbeanInterface 的平台MXBean代理,该代理被指定为在Java虚拟机中具有一个实例,代理将通过给定的
MBeanServerConnection 转发方法调用。
|
static <T extends PlatformManagedObject> |
getPlatformMXBeans(类<T> mxbeanInterface)
返回在Java虚拟机中实现给定的
mxbeanInterface 的平台MXBeans的列表。
|
static <T extends PlatformManagedObject> |
getPlatformMXBeans(MBeanServerConnection connection, 类<T> mxbeanInterface)
返回转发的方法调用平台MXBean代理服务器列表
mxbeanInterface 通过给定
MBeanServerConnection 。
|
static RuntimeMXBean |
getRuntimeMXBean()
返回Java虚拟机的运行时系统的托管bean。
|
static ThreadMXBean |
getThreadMXBean()
返回Java虚拟机的线程系统的托管bean。
|
static <T> T |
newPlatformMXBeanProxy(MBeanServerConnection connection, String mxbeanName, 类<T> mxbeanInterface)
返回给定的平台MXBean接口的代理
MXBean name转发其方法调用通过给定
MBeanServerConnection。
|
public static final String CLASS_LOADING_MXBEAN_NAME
ClassLoadingMXBean
。
public static final String COMPILATION_MXBEAN_NAME
CompilationMXBean
。
public static final String MEMORY_MXBEAN_NAME
MemoryMXBean
。
public static final String OPERATING_SYSTEM_MXBEAN_NAME
OperatingSystemMXBean
。
public static final String RUNTIME_MXBEAN_NAME
RuntimeMXBean
。
public static final String THREAD_MXBEAN_NAME
ThreadMXBean
。
public static final String GARBAGE_COLLECTOR_MXBEAN_DOMAIN_TYPE
GarbageCollectorMXBean
。
ObjectName适用于GarbageCollectorMXBean可以通过将此字符串附加到“ ,name= 收集器的名称 ”来形成。
public static final String MEMORY_MANAGER_MXBEAN_DOMAIN_TYPE
MemoryManagerMXBean
。
ObjectName的ObjectName可以通过将此字符串附加到“ ,name= 经理的名字 ”来形成。
public static final String MEMORY_POOL_MXBEAN_DOMAIN_TYPE
MemoryPoolMXBean
。
ObjectName的ObjectName可以通过在,name= 池的名称附加这个字符串来形成。
public static ClassLoadingMXBean getClassLoadingMXBean()
ClassLoadingMXBean
对象。
public static MemoryMXBean getMemoryMXBean()
MemoryMXBean
对象。
public static ThreadMXBean getThreadMXBean()
ThreadMXBean
对象。
public static RuntimeMXBean getRuntimeMXBean()
RuntimeMXBean
对象。
public static CompilationMXBean getCompilationMXBean()
CompilationMXBean
对象为Java虚拟机或null如果Java虚拟机没有编译系统。
public static OperatingSystemMXBean getOperatingSystemMXBean()
OperatingSystemMXBean
对象。
public static List<MemoryPoolMXBean> getMemoryPoolMXBeans()
public static List<MemoryManagerMXBean> getMemoryManagerMXBeans()
public static List<GarbageCollectorMXBean> getGarbageCollectorMXBeans()
GarbageCollectorMXBean
对象的列表。
Java虚拟机可能具有一个或多个GarbageCollectorMXBean对象。
在执行过程中可能会添加或删除GarbageCollectorMXBean。
public static MBeanServer getPlatformMBeanServer()
MBeanServer
。
在首次调用此方法时,首先通过调用MBeanServerFactory.createMBeanServer
方法创建平台MBeanServer
,并在其平台MBeanServer
中注册每个平台MXBean MBeanServer
及其ObjectName
。
此方法在后续调用中将简单地返回最初创建的平台MBeanServer
。
动态创建和销毁的MXBeans(例如,内存pools
和managers
)将自动注册并注销到平台MBeanServer
。
如果设置了系统属性javax.management.builder.initial
,则创建平台MBeanServer
将由指定的MBeanServerBuilder
完成 。
建议该平台MBeanServer也可用于注册除平台MXBeans之外的其他应用程序托管bean。 这将允许所有MBean通过相同的MBeanServer
,从而允许更容易的网络发布和发现。 应避免与平台MXBeans的名称冲突。
MBeanServer
;
平台MXBeans在第一次调用此方法时被注册到平台MBeanServer
中。
SecurityException
- 如果有安全管理员,并且呼叫者没有
MBeanServerFactory.createMBeanServer()
所要求的
权限 。
MBeanServerFactory
, MBeanServerFactory.createMBeanServer()
public static <T> T newPlatformMXBeanProxy(MBeanServerConnection connection, String mxbeanName, 类<T> mxbeanInterface) throws IOException
此方法相当于:
Proxy.newProxyInstance
(mxbeanInterface.getClassLoader(), new Class[] { mxbeanInterface }, handler)
其中handler是一个InvocationHandler
,调用MXBean接口的方法调用。
handler将输入参数从MXBean数据类型转换为其映射的打开类型,然后转发到MBeanServer ,并将来自MXBean方法调用的返回值通过MBeanServer从打开类型转换为在MXBean接口中声明的相应返回类型。
如果MXBean是通知发布者(即实现NotificationEmitter
),那么mxbeanInterface和NotificationEmitter将由此代理实现。
笔记:
IOException
时与连接器服务器发生通信问题可能被抛出。 应用程序远程访问平台MXBeans使用代理应准备捕获IOException ,就像访问MBeanServerConnector接口一样。 InvalidObjectException
,当MXBean代理接收到枚举常量的名称时,在客户端应用程序中加载的枚举类中缺少。 MBeanServerInvocationHandler
或其newProxyInstance
方法无法用于为平台MXBean创建代理。 由MBeanServerInvocationHandler创建的代理对象不处理class specification中描述的平台MXBeans的属性 。 T
- 一个
mxbeanInterface
类型的参数
connection
- 转发给
MBeanServerConnection 。
mxbeanName
- 要转发到的connection中的平台MXBean的名称。
mxbeanName必须格式为ObjectName
。
mxbeanInterface
- 由代理实现的MXBean接口。
null
如果不存在。
IllegalArgumentException
- if
ObjectName
格式,或 IOException
-如果访问
MBeanServerConnection时出现通信问题。
public static <T extends PlatformManagedObject> T getPlatformMXBean(类<T> mxbeanInterface)
mxbeanInterface
的平台MXBean,它被指定为在Java虚拟机中具有一个实例。
如果Java虚拟机中没有实现管理null
则此方法可能返回null
(例如,没有编译系统的Java虚拟机不实现CompilationMXBean
);
否则,此方法相当于调用:
getPlatformMXBeans(mxbeanInterface)
.get(0);
T
- 一个
mxbeanInterface
类型的参数
mxbeanInterface
- 如果实现了Java虚拟机中具有一个单一实例的平台MXBean的管理界面。
mxbeanInterface
,或
null
如果不存在。
IllegalArgumentException
- 如果
mxbeanInterface
不是一个平台管理界面或不是一个单一平台MXBean。
public static <T extends PlatformManagedObject> List<T> getPlatformMXBeans(类<T> mxbeanInterface)
mxbeanInterface
的平台MXBeans列表。
返回的列表可能包含零个,一个或多个实例。
在给定的管理界面的规范中定义了返回列表中的实例数。
订单未定义,并且不保证返回的列表与以前的调用的顺序相同。
T
- 一个
mxbeanInterface
类型的参数
mxbeanInterface
- 平台MXBean的管理界面
mxbeanInterface
。
IllegalArgumentException
- 如果
mxbeanInterface
不是平台管理界面。
public static <T extends PlatformManagedObject> T getPlatformMXBean(MBeanServerConnection connection, 类<T> mxbeanInterface) throws IOException
mxbeanInterface
的平台MXBean代理,该代理被指定为在Java虚拟机中具有一个实例,代理将通过给定的MBeanServerConnection
转发方法调用。
如果在被监视的Java虚拟机中未实现管理接口,则此方法可能返回null
(例如,没有编译系统的Java虚拟机不实现CompilationMXBean
);
否则,此方法相当于调用:
getPlatformMXBeans(connection, mxbeanInterface)
.get(0);
T
- 一个
mxbeanInterface
类型的参数
connection
- 转发给
MBeanServerConnection
。
mxbeanInterface
- 一个平台MXBean的管理界面,如果已实施,则会监视Java虚拟机中的一个实例。
mxbeanInterface
通过给定
MBeanServerConnection
,或
null
如果不存在。
IllegalArgumentException
- 如果
mxbeanInterface
不是平台管理界面或不是单一平台MXBean。
IOException
-如果在访问时出现通信问题
MBeanServerConnection
。
newPlatformMXBeanProxy(javax.management.MBeanServerConnection, java.lang.String, java.lang.Class<T>)
public static <T extends PlatformManagedObject> List<T> getPlatformMXBeans(MBeanServerConnection connection, 类<T> mxbeanInterface) throws IOException
mxbeanInterface
通过给定MBeanServerConnection
。
返回的列表可能包含零个,一个或多个实例。
在给定的管理界面的规范中定义了返回列表中的实例数。
订单未定义,并且不保证返回的列表与以前的调用的顺序相同。
T
- 一个
mxbeanInterface
类型的参数
connection
- 转发给
MBeanServerConnection
。
mxbeanInterface
- 平台MXBean的管理界面
mxbeanInterface
通过给定
MBeanServerConnection
。
IllegalArgumentException
- 如果
mxbeanInterface
不是平台管理界面。
IOException
-如果在访问时出现通信问题
MBeanServerConnection
。
newPlatformMXBeanProxy(javax.management.MBeanServerConnection, java.lang.String, java.lang.Class<T>)
public static Set<类<? extends PlatformManagedObject>> getPlatformManagementInterfaces()
类
对象的集合,子界面为PlatformManagedObject
,表示用于监视和管理Java平台的所有管理界面。
类
对象的集合,PlatformManagedObject
的子接口表示用于监视和管理Java平台的管理接口。