MBeanServer

 

什么是MBeanServer

MBeanServer是一个包含所有注册MBean的仓库.它是JMX代理层的核心.JMX1.0规范提供一个接口叫 javax.management.MBeanServer. 所有管理的在MBean操作通过MBeanServer执行.使用MBeanServer实例,你能够管理所有MBean.每一个MBean具有一个唯一标志,叫ObjectName.

什么是ObjectName

ObjectName (javax.management.ObjectName)是一个类,唯一标志一个在MBeanServer的MBean.这个对象名称用于管理应用程序来标志MBean以便操作能够在适当的MBean上被调用.一个对象名称包含两部分.它们是

  1. 一个域名称
  2. 一个没有经过排序的一个或者多个关键属性集

域名称是一个大小写敏感的字符串,这个字符串可以包括任何除[: , = * ?]之外的字符.

域名称部分可以在一个对象名称里面忽略,如果这样的话,MBeanServer能够提供一个缺省的域名称.缺省的域名称将是DefaultDomain.

关键属性集组织对象名称的第二部分.一个关键属性是一个名称-值对,名称不需对应MBean的任意属性或者操作.关键属性集必须包含至少一个关键属性.它可以包含任意数量的关键属性,这些关键属性的顺序没有意义.

例如,如果我们描述一个海豚为MBean,那么一套对象名称可以是

Animals:name=dolphin,kind=fish

在这个对象名称中,字符串Animals 组成域名称, 关键属性集由两个关键属性描述:名称和类型,它们的值分别为dolphin和fish.

通用的对象名称描述 如以下语法:

[domain name]:property=value[,property=value]

如果域名称被省略, MBeanServer将提供一个缺省的域名称叫[DefaultDomain].至少必须包含一个关键属性.任意数量的关键属性都可以添加进来.

创建一个MBeanServer 实例

MBeanServer实例能够用MBeanServerFactory类提供的方法获取.MBeanServerFactory类提供了以下方法来获取MBeanServer实例:

public static MBeanServer createMBeanServer()

public static MBeanServer createMBeanServer(String domain)

public static MBeanServer newMBeanServer()

public static MBeanServer newMBeanServer(String domain)

在以上声明的方法中,字符串domain描述对象名称(object name)的域部分.createMBeanServer方法和newMBeanServer方法返回一个MBeanServer实例.这两个方法的区别在于createMBeanServer返回一个MBeanServer实例并且保存这个实例的关联以便能够用findMBeanServer方法访问这个实例.newMBeanServer方法将不保存这个被创建的MBeanServer的实例的任何关联.

如果使用一个变量的构造器创建一个MBeanServer实例,这个字符串变量将作为创建的MBeanServer实例的域名.如果没有变量的构造器被用来创建MBeanServer实例,那么域名称将用字符串DefaultDomain.

查找一个MBeanServer 实例

MBeanServerFactory类提供一个方法叫findMBeanServer用于一个指定MBeanServer实例或者所有MBeanServer实例能够被获取的情况.这个方法的声明为

public static ArrayList findMBeanServer(String id) 这里字符串id表明 MBeanServer 的标志符. 如果这个字符串为null, 那么返回所有在此JVM中注册的 MBeanServer . 如果想返回相应指定的MBeanServer实例,那么必须提供这个MBeanServer实例的相应字符串id. 这个字符串id能够通过 MBeanServerDelegateMBean 的StringId 属性获取.

MBeanServerDelegate MBean

无论一个MBeanServer何时被初始化,MBeanServerDelegate类被作为一个MBean注册,名字为JMImplementation:type=MBeanServerDelegate. 这个MBean提供关于这个 MBean 服务器的信息.MBeanServerDelegate MBean 具有七个只读属性,名字为 MBeanServerId, SpecificationName, SpecificationVersion, SpecificationVendor, ImplementationName, ImplementationVersion 和ImplementationVendor.

XMOJO项目5 的MBeanServerDelegate MBean 提供的属性的缺省值为:

属性名称 属性值
SpecificationVersion 1.0, Final Release
SpecificationVendor Sun Microsystems Inc.
ImplementationVersion 5
ImplementationVendor XMOJO (sponsered by AdventNet Inc.)
ImplementationName The XMOJO Project
MBeanServerId _1
SpecificationName Java Management Extensions Instrumentation and Agent Specification

MBeanServerDelegate MBean 响应 MBeanServer 发出的广播消息.无论何时一个MBean被注册或者被注销,MBeanServerDelegate MBean 广播类型分别为jmx.mbean.created和jmx.mbean.deleted的消息到所有注册的监听器.

需要记住的几点

  1. MBeanServer 维护一个注册的MBean.每一个MBean由一个唯一命名的模式叫对象名称(object name)区分.
  2. MBeanServer 实例能够用MBeanServerFactory类的静态方法获得.
  3. MBeanServerDelegate MBean 是一个MBeanServer的描述,也是MBeanServer发出消息的广播者.

你可能感兴趣的:(server)