提供MBean服务器引用。此类没有实例。
自JMX 1.2起,此类使得可以替换默认的MBeanServer实现。这是通过使用MBeanServerBuilder类完成的。要实例化的初始MBeanServerBuilder类可以通过javax.management.builder.initial系统属性指定。指定的类必须是MBeanServerBuilder的公共子类,并且必须有一个公共的空构造函数。
默认情况下,如果未指定该属性的值,则会创建一个javax.management.MBeanServerBuilder的实例。否则,MBeanServerFactory会尝试使用Thread.currentThread().getContextClassLoader()加载指定的类,或者如果为空,则使用Class.forName()。然后使用Class.newInstance()创建该类的初始实例。如果在此过程中引发任何已检查的异常(例如ClassNotFoundException,InstantiationException),则MBeanServerFactory将在RuntimeException中传播此异常。
每次需要创建新的MBeanServer时,都会查阅javax.management.builder.initial系统属性,并加载该属性指向的类。如果该类与当前MBeanServerBuilder的类不同,则会创建一个新的MBeanServerBuilder。否则,MBeanServerFactory可能会创建一个新的MBeanServerBuilder或重用当前的MBeanServerBuilder。
如果无法加载属性指向的类,或者该类不对应于MBeanServerBuilder的有效子类,则会传播异常,并且在将javax.management.builder.initial系统属性重置为有效值之前,将无法创建任何MBeanServer。
MBeanServerBuilder使得可以包装默认MBeanServerBuilder实现返回的MBeanServers,例如添加额外的安全层。
- 自:
- 1.5
-
Method Summary
Modifier and TypeMethodDescriptionstatic MBeanServer返回一个实现MBeanServer接口的新对象,具有标准默认域名。static MBeanServercreateMBeanServer(String domain) 返回一个实现MBeanServer接口的新对象,具有指定的默认域名。static ArrayList<MBeanServer> findMBeanServer(String agentId) 返回已注册的MBeanServer对象列表。static ClassLoaderRepositorygetClassLoaderRepository(MBeanServer server) 返回给定MBeanServer使用的ClassLoaderRepository。static MBeanServer返回一个实现MBeanServer接口的新对象,具有标准默认域名,而不保留对此新对象的内部引用。static MBeanServernewMBeanServer(String domain) 返回一个实现MBeanServer接口的新对象,具有指定的默认域名,而不保留对此新对象的内部引用。static voidreleaseMBeanServer(MBeanServer mbeanServer) 删除对已创建的MBeanServer的内部MBeanServerFactory引用。
-
Method Details
-
releaseMBeanServer
删除对已创建的MBeanServer的内部MBeanServerFactory引用。这允许垃圾收集器删除MBeanServer对象。- 参数:
-
mbeanServer- 要移除的MBeanServer对象。 - 抛出:
-
IllegalArgumentException- 如果mbeanServer不是由createMBeanServer方法之一生成的,或者已对其调用了releaseMBeanServer。 -
SecurityException- 如果存在SecurityManager并且调用者的权限不包括或暗示。MBeanServerPermission("releaseMBeanServer")
-
createMBeanServer
返回一个实现MBeanServer接口的新对象,具有标准默认域名。当用户指定的域为null时,标准默认域名用作MBeans的ObjectName中的域部分。
标准默认域名为
DefaultDomain。MBeanServer引用被内部保留。这将允许
findMBeanServer返回对此MBeanServer对象的引用。此方法等效于
createMBeanServer(null)。- 返回:
- 新创建的MBeanServer。
- 抛出:
-
SecurityException- 如果存在SecurityManager并且调用者的权限不包括或暗示。MBeanServerPermission("createMBeanServer") -
JMRuntimeException- 如果存在属性javax.management.builder.initial,但它指定的类无法通过公共无参数构造函数实例化;或者如果实例化的构建器从其newMBeanServerDelegate或newMBeanServer方法返回null。 -
ClassCastException- 如果存在属性javax.management.builder.initial并且可以实例化但与MBeanServerBuilder不兼容。
-
createMBeanServer
返回一个实现
MBeanServer接口的新对象,具有指定的默认域名。当用户指定的域为null时,给定的域名用作MBeans的ObjectName中的域部分。MBeanServer引用被内部保留。这将允许
findMBeanServer返回对此MBeanServer对象的引用。- 参数:
-
domain- 创建的MBeanServer的默认域名。这是将由MBeanServer.getDefaultDomain()返回的值。 - 返回:
- 新创建的MBeanServer。
- 抛出:
-
SecurityException- 如果存在SecurityManager并且调用者的权限不包括或暗示。MBeanServerPermission("createMBeanServer") -
JMRuntimeException- 如果存在属性javax.management.builder.initial,但它指定的类无法通过公共无参数构造函数实例化;或者如果实例化的构建器从其newMBeanServerDelegate或newMBeanServer方法返回null。 -
ClassCastException- 如果存在属性javax.management.builder.initial并且可以实例化但与MBeanServerBuilder不兼容。
-
newMBeanServer
返回一个实现MBeanServer接口的新对象,具有标准默认域名,而不保留对此新对象的内部引用。当用户指定的域为null时,标准默认域名用作MBeans的ObjectName中的域部分。
标准默认域名为
DefaultDomain。不保留引用。
findMBeanServer将无法返回对此MBeanServer对象的引用,但是当不再引用MBeanServer对象时,垃圾收集器将能够删除该对象。此方法等效于
newMBeanServer(null)。- 返回:
- 新创建的MBeanServer。
- 抛出:
-
SecurityException- 如果存在SecurityManager并且调用者的权限不包括或暗示。MBeanServerPermission("newMBeanServer") -
JMRuntimeException- 如果存在属性javax.management.builder.initial,但它指定的类无法通过公共无参数构造函数实例化;或者如果实例化的构建器从其newMBeanServerDelegate或newMBeanServer方法返回null。 -
ClassCastException- 如果存在属性javax.management.builder.initial并且可以实例化但与MBeanServerBuilder不兼容。
-
newMBeanServer
返回一个实现MBeanServer接口的新对象,具有指定的默认域名,而不保留对此新对象的内部引用。当用户指定的域为null时,给定的域名用作MBeans的ObjectName中的域部分。
不保留引用。
findMBeanServer将无法返回对此MBeanServer对象的引用,但是当不再引用MBeanServer对象时,垃圾收集器将能够删除该对象。- 参数:
-
domain- 创建的MBeanServer的默认域名。这个值将被MBeanServer.getDefaultDomain()返回。 - 返回:
- 新创建的MBeanServer。
- 抛出:
-
SecurityException- 如果存在SecurityManager并且调用者的权限不包括或暗示。MBeanServerPermission("newMBeanServer") -
JMRuntimeException- 如果属性javax.management.builder.initial存在,但它命名的类不能通过公共无参数构造函数实例化;或者如果实例化的构建器从其newMBeanServerDelegate或newMBeanServer方法返回null。 -
ClassCastException- 如果属性javax.management.builder.initial存在并且可以实例化,但与MBeanServerBuilder不兼容。
-
findMBeanServer
返回已注册的MBeanServer对象列表。已注册的MBeanServer对象是由
createMBeanServer方法之一创建的,并且没有随后使用releaseMBeanServer释放的对象。- 参数:
-
agentId- 要检索的MBeanServer的代理标识符。如果此参数为null,则返回此JVM中所有已注册的MBeanServers。否则,仅返回id等于agentId的MBeanServers。MBeanServer的id是其代理MBean的MBeanServerId属性。 - 返回:
- MBeanServer对象列表。
- 抛出:
-
SecurityException- 如果存在SecurityManager并且调用者的权限不包括或暗示。MBeanServerPermission("findMBeanServer")
-
getClassLoaderRepository
返回给定MBeanServer使用的ClassLoaderRepository。此方法等效于server.getClassLoaderRepository()。- 参数:
-
server- 要检查的MBeanServer。自JMX 1.2以来,如果server为null,则结果是NullPointerException。此行为与JMX 1.1 中实现的不同 - 在那里,使用null的可能性已被弃用。 - 返回:
- 给定MBeanServer使用的ClassLoaderRepository。
- 抛出:
-
SecurityException- 如果存在SecurityManager并且调用者的权限不包括或暗示。MBeanPermission("getClassLoaderRepository") -
NullPointerException- 如果server为null。
-