- java.lang.Object
 -  
      
- javax.management.MBeanServerFactory
 
 
-  
       
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,以便添加额外的安全层。
- 从以下版本开始:
 - 1.5
 
 
-  
        
       
-  
             
方法摘要
所有方法 静态方法 具体的方法 Modifier and Type 方法 描述 static MBeanServercreateMBeanServer()返回实现具有标准默认域名的MBeanServer接口的新对象。static MBeanServercreateMBeanServer(String domain)使用指定的默认域名返回实现MBeanServer接口的新对象。static ArrayList<MBeanServer>findMBeanServer(String agentId)返回已注册MBeanServer对象的列表。static ClassLoaderRepositorygetClassLoaderRepository(MBeanServer server)返回给定MBeanServer使用的ClassLoaderRepository。static MBeanServernewMBeanServer()使用标准默认域名返回实现MBeanServer接口的新对象,而不保留对此新对象的内部引用。static MBeanServernewMBeanServer(String domain)使用指定的默认域名返回实现MBeanServer接口的新对象,而不保留对此新对象的内部引用。static voidreleaseMBeanServer(MBeanServer mbeanServer)删除对创建的MBeanServer的内部MBeanServerFactory引用。 
 -  
             
 
-  
        
       
-  
             
方法详细信息
-  
releaseMBeanServer
public static void releaseMBeanServer(MBeanServer mbeanServer)
删除对创建的MBeanServer的内部MBeanServerFactory引用。 这允许垃圾收集器删除MBeanServer对象。- 参数
 -  
              
mbeanServer- 要删除的MBeanServer对象。 - 异常
 -  
              
IllegalArgumentException- 如果mbeanServer不是由createMBeanServer方法之一生成,或者如果已经调用了releaseMBeanServer。 -  
              
SecurityException- 如果有一个SecurityManager,并且调用者的权限不包括或暗示。MBeanServerPermission("releaseMBeanServer") 
 
-  
createMBeanServer
public static MBeanServer createMBeanServer()
返回实现具有标准默认域名的MBeanServer接口的新对象。 当用户指定域为空时,默认域名用作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
public static MBeanServer createMBeanServer(String domain)
使用指定的默认域名返回实现
MBeanServer接口的新对象。 当用户指定域为空时,给定的域名用作MBeans的ObjectName中的域部分。MBeanServer参考内部保存。 这将允许
findMBeanServer返回对此MBeanServer对象的引用。- 参数
 -  
              
domain- 创建的MBeanServer的默认域名。 这是MBeanServer.getDefaultDomain()将返回的值 。 - 结果
 - 新创建的MBeanServer。
 - 异常
 -  
              
SecurityException- 如果有SecurityManager,并且调用者的权限不包括或暗示。MBeanServerPermission("createMBeanServer") -  
              
JMRuntimeException- 如果属性javax.management.builder.initial存在,但其名称的类不能通过公共无javax.management.builder.initial构造函数实例化; 或者如果实例化的构建器从其newMBeanServerDelegate或newMBeanServer方法返回null。 -  
              
ClassCastException- 如果属性javax.management.builder.initial存在并且可以被实例化,但不与MBeanServerBuilder分配兼容。 
 
-  
newMBeanServer
public static MBeanServer newMBeanServer()
使用标准默认域名返回实现MBeanServer接口的新对象,而不保留对此新对象的内部引用。 当用户指定域为空时,默认域名用作MBeans的ObjectName中的域部分。
标准默认域名为
DefaultDomain。没有参考。
findMBeanServer将无法返回对此MBeanServer对象的引用,但垃圾收集器将在不再引用MBeanServer对象时能够删除该MBeanServer对象。此方法相当于
newMBeanServer(null)。- 结果
 - 新创建的MBeanServer。
 - 异常
 -  
              
SecurityException- 如果有一个SecurityManager,并且呼叫者的权限不包括或暗示。MBeanServerPermission("newMBeanServer") -  
              
JMRuntimeException- 如果属性javax.management.builder.initial存在,但其名称的类不能通过公共无javax.management.builder.initial构造函数实例化; 或者如果实例化的构建器从其newMBeanServerDelegate或newMBeanServer方法返回null。 -  
              
ClassCastException- 如果属性javax.management.builder.initial存在并且可以实例化,但不与MBeanServerBuilder分配兼容。 
 
-  
newMBeanServer
public static MBeanServer newMBeanServer(String domain)
使用指定的默认域名返回实现MBeanServer接口的新对象,而不保留对此新对象的内部引用。 当用户指定域为空时,给定的域名用作MBeans的ObjectName中的域部分。
没有参考。
findMBeanServer将无法返回对此MBeanServer对象的引用,但是在不再引用MBeanServer对象时,垃圾收集器将能够删除该MBeanServer对象。- 参数
 -  
              
domain- 创建的MBeanServer的默认域名。 这是MBeanServer.getDefaultDomain()将返回的值 。 - 结果
 - 新创建的MBeanServer。
 - 异常
 -  
              
SecurityException- 如果有SecurityManager,并且呼叫者的权限不包括或暗示。MBeanServerPermission("newMBeanServer") -  
              
JMRuntimeException- 如果属性javax.management.builder.initial存在,但其名称的类不能通过公共无javax.management.builder.initial构造函数实例化; 或者如果实例化的构建器从其newMBeanServerDelegate或newMBeanServer方法返回null。 -  
              
ClassCastException- 如果属性javax.management.builder.initial存在并且可以实例化,但不与MBeanServerBuilder分配兼容。 
 
-  
findMBeanServer
public static ArrayList<MBeanServer> findMBeanServer(String agentId)
返回已注册MBeanServer对象的列表。 注册的MBeanServer对象是由
createMBeanServer方法之一创建的,而不是随后用releaseMBeanServer发布。- 参数
 -  
              
agentId- 要检索的MBeanServer的代理标识符。 如果此参数为空,则返回此JVM中的所有已注册MBeanServers。 否则,只返回其id等于agentIdMBeanServers。 MBeanServer的id是其MBeanServerIdMBean的MBeanServerId属性。 - 结果
 - MBeanServer对象的列表。
 - 异常
 -  
              
SecurityException- 如果有一个SecurityManager,并且调用者的权限不包括或暗示。MBeanServerPermission("findMBeanServer") 
 
-  
getClassLoaderRepository
public static ClassLoaderRepository getClassLoaderRepository(MBeanServer server)
返回给定MBeanServer使用的ClassLoaderRepository。 此方法相当于server.getClassLoaderRepository()。- 参数
 -  
              
server- 检查的MBeanServer。 由于JMX 1.2,如果server是null,结果是一个NullPointerException。 此行为与JMX 1.1中已实现的不同之处在于,可以使用null已被弃用。 - 结果
 - 给定MBeanServer使用的Class Loader Repository。
 - 异常
 -  
              
SecurityException- 如果有一个SecurityManager,并且调用者的权限不包括或暗示。MBeanPermission("getClassLoaderRepository") -  
              
NullPointerException- 如果server为空。 
 
 -  
 
 -