public class MBeanServerFactory extends Object
提供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的有效子类,则会传播异常,并且不会创建MBeanServer,直到将javax.management.builder.initial系统属性重置为有效值。
MBeanServerBuilder可以包装默认MBeanServerBuilder实现返回的MBeanServers,以便添加额外的安全层。
Modifier and Type | Method and Description |
---|---|
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引用。
|
public static void releaseMBeanServer(MBeanServer mbeanServer)
mbeanServer
- 要删除的MBeanServer对象。
IllegalArgumentException
- 如果
mbeanServer
未由其中一个
createMBeanServer
方法生成,或者如果
releaseMBeanServer
已被调用。
SecurityException
- 如果有一个SecurityManager,并且调用者的权限不包括或暗示
MBeanServerPermission
("releaseMBeanServer")
。
public static MBeanServer createMBeanServer()
返回实现具有标准默认域名的MBeanServer接口的新对象。 当用户指定域为空时,默认域名用作MBeans的ObjectName中的域部分。
标准默认域名为DefaultDomain
。
MBeanServer参考内部保存。 这将允许findMBeanServer
返回对此MBeanServer对象的引用。
此方法相当于createMBeanServer(null)
。
SecurityException
- 如果有一个SecurityManager,并且呼叫者的权限不包括或暗示
MBeanServerPermission
("createMBeanServer")
。
JMRuntimeException
- 如果属性javax.management.builder.initial
存在,但其名称的类不能通过公共无参构造函数实例化;
或者如果实例化的构建器从其newMBeanServerDelegate
或newMBeanServer
方法返回null。
ClassCastException
- 如果属性javax.management.builder.initial
存在并且可以被实例化,但不与MBeanServerBuilder
分配兼容 。
public static MBeanServer createMBeanServer(String domain)
返回实现具有指定默认域名的MBeanServer
接口的新对象。 当用户指定域为空时,给定的域名用作MBeans的ObjectName中的域部分。
MBeanServer参考内部保存。 这将允许findMBeanServer
返回对此MBeanServer对象的引用。
domain
- 创建的MBeanServer的默认域名。
这是MBeanServer.getDefaultDomain()
将返回的值 。
SecurityException
- 如果有一个SecurityManager,并且调用者的权限不包括或暗示
MBeanServerPermission
("createMBeanServer")
。
JMRuntimeException
- 如果属性javax.management.builder.initial
存在,但其名称的类不能通过公共无参构造函数实例化;
或者如果实例化的构建器从其newMBeanServerDelegate
或newMBeanServer
方法返回null。
ClassCastException
- 如果属性javax.management.builder.initial
存在并且可以实例化,但不分配与MBeanServerBuilder
兼容 。
public static MBeanServer newMBeanServer()
使用标准默认域名返回实现MBeanServer接口的新对象,而不保留对此新对象的内部引用。 当用户指定域为空时,默认域名用作MBeans的ObjectName中的域部分。
标准默认域名为DefaultDomain
。
没有参考。 findMBeanServer
将无法返回对此MBeanServer对象的引用,但垃圾收集器将在不再引用MBeanServer对象时删除该MBeanServer对象。
此方法相当于newMBeanServer(null)
。
SecurityException
- 如果有一个SecurityManager,并且调用者的权限不包括或暗示
MBeanServerPermission
("newMBeanServer")
。
JMRuntimeException
- 如果属性javax.management.builder.initial
存在,但其名称的类不能通过公共无参构造函数实例化;
或者如果实例化的构建器从其newMBeanServerDelegate
或newMBeanServer
方法返回null。
ClassCastException
- 如果属性javax.management.builder.initial
存在并且可以被实例化,但不与MBeanServerBuilder
分配兼容 。
public static MBeanServer newMBeanServer(String domain)
使用指定的默认域名返回实现MBeanServer接口的新对象,而不保留对此新对象的内部引用。 当用户指定域为空时,给定的域名用作MBeans的ObjectName中的域部分。
没有参考。 findMBeanServer
将无法返回对此MBeanServer对象的引用,但是当不再引用MBeanServer对象时,垃圾收集器将能够删除MBeanServer对象。
domain
- 创建的MBeanServer的默认域名。
这是MBeanServer.getDefaultDomain()
将返回的值 。
SecurityException
- 如果有一个SecurityManager,并且调用者的权限不包括或暗示
MBeanServerPermission
("newMBeanServer")
。
JMRuntimeException
- 如果属性javax.management.builder.initial
存在,但其名称的类不能通过公共无参构造函数实例化;
或者如果实例化的构建器从其newMBeanServerDelegate
或newMBeanServer
方法返回null。
ClassCastException
- 如果属性javax.management.builder.initial
存在并且可以被实例化,但不与MBeanServerBuilder
分配兼容 。
public static ArrayList<MBeanServer> findMBeanServer(String agentId)
返回已注册MBeanServer对象的列表。 注册的MBeanServer对象是由createMBeanServer
方法之一创建的,而不是随后用releaseMBeanServer
发布。
agentId
- 要检索的MBeanServer的代理标识符。
如果此参数为空,则返回此JVM中的所有已注册的MBeanServers。
否则,只返回其id等于agentId
。
MBeanServer的id是其代表MBean的MBeanServerId
属性。
SecurityException
- 如果有一个SecurityManager,并且调用者的权限不包括或暗示
MBeanServerPermission
("findMBeanServer")
。
public static ClassLoaderRepository getClassLoaderRepository(MBeanServer server)
server.getClassLoaderRepository()
。
server
- 检查的MBeanServer。
由于JMX 1.2,如果server
是null
,结果是NullPointerException
。
此行为与JMX 1.1中已实现的不同之处在于 - 不推荐使用null
的可能性。
SecurityException
- 如果有一个SecurityManager,并且调用者的权限不包括或暗示
MBeanPermission
("getClassLoaderRepository")
。
NullPointerException
- 如果
server
为空。