提供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 MBeanServer
createMBeanServer
(String domain) 返回一个实现MBeanServer
接口的新对象,具有指定的默认域名。static ArrayList
<MBeanServer> findMBeanServer
(String agentId) 返回已注册的MBeanServer对象列表。static ClassLoaderRepository
getClassLoaderRepository
(MBeanServer server) 返回给定MBeanServer使用的ClassLoaderRepository。static MBeanServer
返回一个实现MBeanServer接口的新对象,具有标准默认域名,而不保留对此新对象的内部引用。static MBeanServer
newMBeanServer
(String domain) 返回一个实现MBeanServer接口的新对象,具有指定的默认域名,而不保留对此新对象的内部引用。static void
releaseMBeanServer
(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。
-