JMX(英語:Java Management Extensions,即Java管理扩展)是Java平台上为应用程序、设备、系统等植入管理功能的框架。JMX可以跨越一系列异构操作系统平台、系统体系结构网络传输协议,灵活的开发无缝集成的系统、网络和服务管理应用。

托管Bean

托管Bean(英語:Managed BeanMBean)是一种通过依赖注入创建的JavaBean。托管Bean主要用在Java管理扩展技术中。在Java EE 6的规范中,对托管Bean做了更具体的规定。

MBean代表了运行在Java虚拟机上的资源,例如应用程序或Java EE服务(事务监控、JDBC驱动程序等)。其可以用于收集如性能、资源使用率、问题信息等关键的统计信息(通过拉取英语Pull technology),获取或设置应用程序的配置或属性(通过推送拉取英语Pull technology),以及对故障或状态变化等的通知事件(通过推送)。

Java EE 6规定,托管Bean是一种Bean类。如果一个Java的外部类被其他Java EE规范(例如JavaServer Faces规范)定义为托管Bean,或者它满足下述所有条件,那么这个类就是一个托管Bean:

  1. 它不是一个非静态内部类。
  2. 它是一个具体类,或者是被@Decorator注解
  3. 它没有被EJB组件定义注解注解,或在ejb-jar.xml中被声明为EJB Bean类。

定义托管Bean时无需特殊的声明(如注解等)。

一个实现了javax.management.NotificationEmitter的MBean,其内部的变化(针对属性)可以通知MBeanServer。对MBean的变化感兴趣的应用程序可以注册一个到MBeanServer的监听器(javax.management.NotificationListener)。注意,JMX并不保证所有通知都会被监听器接收。[1]

类型

有两种基本类型的MBean:

  • 标准MBean(Standard MBeans):实现了业务接口,其包含属性的getter和setter和操作(即方法)。
  • 动态MBean(Dynamic MBeans):实现javax.management.DynamicMBean接口,其提供了列出属性和操作,以及获取和设置属性值的方式。

附加的类型有开放MBean(Open MBeans)、模型MBean(Model MBeans)和监视器MBean(Monitor MBeans)。 开放MBean是限定为基本数据类型的动态MBean,因而可移植性较好。 模型MBean是可以在运行期间配置的动态MBean。一般的MBean类也提供了用于在程序运行期间动态地配置资源的功能。

MXBean(Platform MBean,平台MBean)是一种特殊类型的MBean,它具体化英语Reification (computer science)Java虚拟机子系统,例如垃圾回收即时编译内存池多线程等。

MLet(Management applet,管理小程序)是一个实用程序MBean,在MBeanServer用来从XML描述中加载、实例化和注册MBean。这种XML描述符的格式是:[2]

 <MLET CODE = ''class'' | OBJECT = ''serfile''
   ARCHIVE = ''archiveList''
   [CODEBASE = ''codebaseURL'']
   [NAME = ''objectName'']
   [VERSION = ''version'']
 >
   [arglist]
 </MLET>

参见

参考文献

  1. ^ Java Management Extensions (JMX) - Best Practices. [2014-08-23]. (原始内容存档于2019-05-02). 
  2. ^ MLet (Java 2 Platform SE 5.0). Sun Microsystems. [2008-06-22]. (原始内容存档于2010-02-10). 

外部链接