什么是MBeanServer
MBeanServer是一个包含所有注册MBean的仓库.它是JMX代理层的核心.JMX1.0规范提供一个接口叫 javax.management.MBeanServer. 所有管理的在MBean操作通过MBeanServer执行.使用MBeanServer实例,你能够管理所有MBean.每一个MBean具有一个唯一标志,叫ObjectName.
什么是ObjectName
ObjectName (javax.management.ObjectName)是一个类,唯一标志一个在MBeanServer的MBean.这个对象名称用于管理应用程序来标志MBean以便操作能够在适当的MBean上被调用.一个对象名称包含两部分.它们是
- 一个域名称
- 一个没有经过排序的一个或者多个关键属性集
域名称是一个大小写敏感的字符串,这个字符串可以包括任何除[: , = * ?]之外的字符.
域名称部分可以在一个对象名称里面忽略,如果这样的话,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的消息到所有注册的监听器.
需要记住的几点
- MBeanServer 维护一个注册的MBean.每一个MBean由一个唯一命名的模式叫对象名称(object name)区分.
- MBeanServer 实例能够用MBeanServerFactory类的静态方法获得.
- MBeanServerDelegate MBean 是一个MBeanServer的描述,也是MBeanServer发出消息的广播者.
分享到:
相关推荐
**JMX(一)——MBean Server** Java Management Extensions (JMX) 是Java平台上的一个标准,用于管理和监控应用程序、设备和服务。它提供了一个灵活的框架,使得开发者能够轻松地创建可管理的组件,并通过标准接口...
2. **MBeanServer操作**:熟悉MBeanServer提供的API,如`createMBean()`、`queryMBeans()`等,用于管理MBean。 3. **MBean的交互**:学习如何通过MBeanServer获取和设置MBean的属性,调用其操作方法。 4. **连接器和...
Spring JMX的核心概念包括MBean(Managed Bean)、MBeanServer和代理(MBeanProxy)。MBean是JMX中的基本管理单元,代表一个可管理的资源,可以是一个对象、服务或任何其他需要管理的组件。MBeanServer则是管理这些...
2. **MBeanServer**: MBeanServer是管理MBean的中心实体,每个JVM通常只有一个MBeanServer。所有MBean都需要注册到这个服务器上,以便通过MBeanServer对外提供服务。开发者可以使用`ManagementFactory....
1. **JMX架构**:JMX架构由三个主要组件构成:MBeans(Managed Beans)、MBeanServer和代理(Agents)。MBeans代表可管理的资源,它们是JMX的核心;MBeanServer是运行MBeans并处理管理操作的实体;代理则用于暴露...
2. **MBeanServer**:MBeanServer是JMX的核心组件,负责注册MBean,执行MBean的操作,并提供查询和管理MBean的能力。 3. **MBeanInfo**:描述MBean的属性、操作、构造函数、通知等元数据。 4. **Notification**:...
MBeanServer提供了注册机制,允许外部客户端通过特定的适配器(Adapter)和连接器(Connector)访问MBean。客户端可以使用MBeanServer的名字服务找到并操作对应的MBean实例。 JMX Agent是一个包含MBeanServer和附加...
在我们的示例中,我们使用JDK 1.5或更高版本,使用RMI连接方式来连接MBeanServer和Client。我们在机器23上实现了Router类,并在机器26上实现了Client,用于远程访问Router类提供的管理功能。 Router类是一个简单的...
3. Connector:Connector是一种通信协议,用于连接MBeanServer和外部管理应用程序。 二、JMX架构组件 JMX架构主要由五个组件组成: 1. MBean:MBean是JMX架构的核心组件,提供了管理接口,用于监控和控制Java应用...
在这个例子中,`MyMBeanImpl`是一个实现了特定MBean接口的类,它可以通过`ObjectName`指定的名称注册到MBeanServer中。 ### 结论 JMX为Java平台提供了一套强大的管理工具和技术,使得开发者能够轻松地管理和监控...
MBeans可以是标准的、开放的或私有的,它们通过MBeanServer进行注册,然后可以通过JMX客户端工具进行访问和操作。MBeanServer是JMX架构的核心,它负责管理MBeans,并提供查询、通知和远程访问等功能。 "jmx-1_2_1-...
综上所述,"JMX开发步骤.doc"可能涵盖了JMX的基本概念、MBean的创建与注册、MBeanServer的使用、管理接口设计、连接器配置、安全管理实践以及如何在实际项目中应用JMX等详细内容。这份文档对于学习和理解JMX技术,...
JMX 包括管理对象(MBeans)、代理(MBeanServer)和连接器(Connector),通过这些元素,可以实现对应用程序的全面监控。 二、MBeans MBeans是JMX的核心,代表可管理的实体或资源。它们可以是简单的数据对象,也...
总结来说,JMX提供了一种统一的管理和监控机制,通过MBeans、MBeanServer和JMX Connectors,开发者可以轻松地为Java应用程序添加管理和监控功能。理解并熟练运用JMX对于构建可扩展、可维护的大型Java系统至关重要。
这三层之间的关系可以用图形表示,如图一所示,其中MBeanServer、Adapter和Connector在不同层次上协同工作,使得管理操作得以分布式地执行,如图二所示。 JMX的优势在于其灵活性和可扩展性,它允许开发者轻松地集成...
这通常通过调用 MBeanServer 接口的方法完成。 3. **属性和通知**:客户端可以订阅服务端 MBean 的属性变化或通知,以便实时监控系统状态。 4. **异步通信**:客户端可能支持异步通信模式,这样在执行耗时操作时...
它允许开发者创建可管理的组件,即MBeans(Managed Beans),并通过MBeanServer进行交互。JMX提供了一种标准的方式来暴露应用程序的内部状态和操作,使得管理员可以通过管理控制台或者远程接口进行管理。 **一、JMX...
5. **连接到RMI注册表**: 在客户端,使用` LocateRegistry.getRegistry()`找到RMI注册表,并通过`MBeanServerConnection`连接到远程的MBeanServer。 6. **操作MBean**: 一旦连接建立,就可以使用`...
2. **配置MBeanServer**:设置MBeanServer,它是JMX的核心,负责管理所有的MBean。 3. **启用远程访问**:配置JMX连接器,如RMI,允许远程客户端连接到MBeanServer。 4. **安全配置**:根据需求配置安全策略,控制谁...