javax.management

接口
异常
注释
java.lang.Object
  继承者 javax.management.MBeanServerFactory

public class MBeanServerFactory
     
extends Object

提供 MBean 服务器引用。没有此类的实例。

从 JMX 1.2 开始,此类使替换默认的 MBeanServer 实现成为可能。使用 MBeanServerBuilder 类实现此替换。可通过 javax.management.builder.initial 系统属性指定要实例化的初始 MBeanServerBuilder 的类。指定的类必须是 MBeanServerBuilder 的公共子类,并且必须具有公共的空构造方法。

默认情况下,如果未指定该属性的值,则创建一个 javax.management.MBeanServerBuilder 的实例。否则,MBeanServerFactory 会试图使用 Thread.currentThread().getContextClassLoader() 加载指定的类,如果该属性值为 null,则使用 Class.forName() 加载指定的类。然后它使用 Class.newInstance() 创建该 Class 的初始实例。如果在此过程中(例如 ClassNotFoundExceptionInstantiationException)引发已检查异常,则该 MBeanServerFactory 将从 RuntimeException 内传播此异常。

每次需要创建新的 MBeanServer 时都会查询 javax.management.builder.initial 系统属性,并加载该属性所指向的类。如果该类与当前的 MBeanServerBuilder 的类不同,则创建一个新的 MBeanServerBuilder。否则,MBeanServerFactory 可能创建一个新的 MBeanServerBuilder 或重用当前的 MBeanServerBuilder。

如果无法加载该属性所指向的类,或者该属性所指向的类不对应于有效的 MBeanServerBuilder 子类,则抛出一个异常,并且在将 javax.management.builder.initial 系统属性重置为有效值之前,不能创建任何 MBeanServer。

出于某种目的,例如添加一个额外的安全层,MBeanServerBuilder 使得包装默认 MBeanServerBuilder 实现所返回的 MBeanServer 成为可能。

从以下版本开始:
1.5

方法摘要
static MBeanServer createMBeanServer()
          返回一个新对象,该对象使用标准的默认域名来实现 MBeanServer 接口。
static MBeanServer createMBeanServer(String domain)
          返回一个新对象,该对象使用指定的默认域名来实现 MBeanServer 接口。
static ArrayList<MBeanServer> findMBeanServer(String agentId)
          返回已注册 MBeanServer 对象的列表。
static ClassLoaderRepository getClassLoaderRepository(MBeanServer server)
          返回给定 MBeanServer 使用的 ClassLoaderRepository。
static MBeanServer newMBeanServer()
          返回一个新对象,该对象使用标准的默认域名来实现 MBeanServer 接口,不保持对此新对象的内部引用。
static MBeanServer newMBeanServer(String domain)
          返回一个新对象,该对象使用指定的默认域名来实现 MBeanServer 接口,不保持对此新对象的内部引用。
static void releaseMBeanServer(MBeanServer mbeanServer)
          移除对已创建 MBeanServer 的内部 MBeanServerFactory 引用。
 
从类 java.lang.Object 继承的方法
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

方法详细信息

releaseMBeanServer

public static void releaseMBeanServer(MBeanServer mbeanServer)
移除对已创建 MBeanServer 的内部 MBeanServerFactory 引用。这允许垃圾回收器移除该 MBeanServer 对象。

参数:
mbeanServer - 要移除的 MBeanServer 对象。
抛出:
IllegalArgumentException - 如果未通过某个 createMBeanServer 方法生成 mbeanServer,或者如果已在该 mbeanServer 上调用 releaseMBeanServer
SecurityException - 如果有 SecurityManager 且调用者的权限不包括或隐含 MBeanServerPermission("releaseMBeanServer")

createMBeanServer

public static MBeanServer createMBeanServer()

返回一个新对象,该对象使用标准的默认域名来实现 MBeanServer 接口。如果用户指定的域为 null,则将默认域名用作 MBean 的 ObjectName 的域部分。

标准的默认域名是 DefaultDomain

内部保存该 MBeanServer 引用。这就允许 findMBeanServer 返回对此 MBeanServer 对象的引用。

此方法等效于 createMBeanServer(null)

返回:
新创建的 MBeanServer。
抛出:
SecurityException - 如果有 SecurityManager 且调用者的权限不包括或隐含 MBeanServerPermission("createMBeanServer")
JMRuntimeException - 如果属性 javax.management.builder.initial 存在,但是无法通过公共的无参数构造方法实例化它所指定的类;如果已实例化的生成器从其 newMBeanServerDelegatenewMBeanServer 方法中返回 null。
ClassCastException - 如果属性 javax.management.builder.initial 存在并且可以被实例化,但是它的分配与 MBeanServerBuilder 不兼容。

createMBeanServer

public static MBeanServer createMBeanServer(String domain)

返回一个新对象,该对象使用指定的默认域名来实现 MBeanServer 接口。如果用户指定的域为 null,则将给定的域名用作 MBean 的 ObjectName 的域部分。

内部保存该 MBeanServer 引用。这就允许 findMBeanServer 返回对此 MBeanServer 对象的引用。

参数:
domain - 所创建的 MBeanServer 的默认域名。这是 MBeanServer.getDefaultDomain() 所返回的值。
返回:
新创建的 MBeanServer。
抛出:
SecurityException - 如果有 SecurityManager 且调用者的权限不包括或隐含 MBeanServerPermission("createMBeanServer")
JMRuntimeException - 如果属性 javax.management.builder.initial 存在,但是无法通过公共的无参数构造方法实例化它所指定的类;如果已实例化的生成器从其 newMBeanServerDelegatenewMBeanServer 方法中返回 null。
ClassCastException - 如果属性 javax.management.builder.initial 存在并且可以被实例化,但是它的分配与 MBeanServerBuilder 不兼容。

newMBeanServer

public static MBeanServer newMBeanServer()

返回一个新对象,该对象使用标准的默认域名来实现 MBeanServer 接口,不保持对此新对象的内部引用。如果用户指定的域为 null,则将默认域名用作 MBean 的 ObjectName 的域部分。

标准的默认域名是 DefaultDomain

不保存引用。findMBeanServer 无法返回对此 MBeanServer 对象的引用,但是没有对该 MBeanServer 的引用时,垃圾回收器能够移除该 MBeanServer 对象。

此方法等效于 newMBeanServer(null)

返回:
新创建的 MBeanServer。
抛出:
SecurityException - 如果有 SecurityManager 且调用者的权限不包括或隐含 MBeanServerPermission("newMBeanServer")
JMRuntimeException - 如果属性 javax.management.builder.initial 存在,但是无法通过公共的无参数构造方法实例化它所指定的类;如果已实例化的生成器从其 newMBeanServerDelegatenewMBeanServer 方法中返回 null。
ClassCastException - 如果属性 javax.management.builder.initial 存在并且可以被实例化,但是它的分配与 MBeanServerBuilder 不兼容。

newMBeanServer

public static MBeanServer newMBeanServer(String domain)

返回一个新对象,该对象使用指定的默认域名来实现 MBeanServer 接口,不保持对此新对象的内部引用。如果用户指定的域为 null,则将给定的域名用作 MBean 的 ObjectName 的域部分。

不保存引用。findMBeanServer 无法返回对此 MBeanServer 对象的引用,但是没有对该 MBeanServer 的引用时,垃圾回收器能够移除该 MBeanServer 对象。

参数:
domain - 所创建的 MBeanServer 的默认域名。这是 MBeanServer.getDefaultDomain() 将要返回的值。
返回:
新创建的 MBeanServer。
抛出:
SecurityException - 如果有 SecurityManager 且调用者的权限不包括或隐含 MBeanServerPermission("newMBeanServer")
JMRuntimeException - 如果属性 javax.management.builder.initial 存在,但是无法通过公共的无参数构造方法实例化它所指定的类;如果已实例化的生成器从其 newMBeanServerDelegatenewMBeanServer 方法中返回 null。
ClassCastException - 如果属性 javax.management.builder.initial 存在并且可以被实例化,但是它的分配与 MBeanServerBuilder 不兼容。

findMBeanServer

public static ArrayList<MBeanServer> findMBeanServer(String agentId)

返回已注册 MBeanServer 对象的列表。已注册的 MBeanServer 对象是通过某个 createMBeanServer 方法创建并且随后未使用 releaseMBeanServer 释放的 MBeanServer。

参数:
agentId - 要检索的 MBeanServer 的代理标识符。如果此参数为 null,则返回此 JVM 中的所有已注册 MBeanServer。否则只返回其 id 等于 agentId 的 MBeanServer。MBeanServer 的 id 是其委托 MBean 的 MBeanServerId 属性。
返回:
MBeanServer 对象的列表。
抛出:
SecurityException - 如果有 SecurityManager 且调用者的权限不包括或隐含 MBeanServerPermission("findMBeanServer")

getClassLoaderRepository

public static ClassLoaderRepository getClassLoaderRepository(MBeanServer server)
返回给定 MBeanServer 使用的 ClassLoaderRepository。此方法等效于 server.getClassLoaderRepository()

参数:
server - 要检查的 MBeanServer。从 JMX 1.2 开始,如果 servernull,则结果是 NullPointerException。此行为与 JMX 1.1 中相应实现的行为不同 - 已不再使用 null 值。
返回:
给定 MBeanServer 使用的 ClassLoaderRepository。
抛出:
SecurityException - 如果有 SecurityManager 且调用者的权限不包括或隐含 MBeanPermission("getClassLoaderRepository")
NullPointerException - 如果 server 为 null。