四.创建MBean描述文件
在上面第三段代码中,我们可以看到,要将MBean注册到MBean Server中必须先创建MBeanInfo,MBean的setModelMBeanInfo()用来将MBeanInfo设置到MBean中。为了能够灵活的获得MBean的信息,从而将MBean注册到MBeanServer,在O'Reilly出版的"java enterprise的最佳实践"里提到,采用XML文件对MBean描述是一种非常不错的选择方案,并且提供了一个XML描述范例,因此本文也推荐在管理Web应用也采用使用MBean描述文件的方法。实际上无论tomcat4.X,还是JBOSS,都采用使用MBean描述文件的方式创建MBean,下面提供了一个Tomcat4.x里面的MBean描述文件方案,并用该方案描述了上述提到的两个数据库连接管理的MBean。Tomcat提供了读取该描述文件的办法,具体可以参看Tomcat提供的帮助文档--如何使用MBean descriptor ( "http://jakarta.apache.org/tomcat/tomcat-4.1-doc/mbeans-descriptor-howto.html") 。
五.注册MBean
在对MBean注册前,必须得到MBean的描述信息,并且保存在MBeanInfo的实例中,否则是无法将MBean注册到MBean Server当中的,通过MBean描述文件,获得各种类型MBean的描述信息是一件非常简单的事情,而这些正是创建MBean所需要的,这样做的优点在于不需要通过编写代码,只需要修改描述文件,就可以添加新的MBean,注册的代码实际上我们之前的代码已经列出。在MBean注册时必须指定对应的ObjectName,ObjectName相当于MBean在MBean Server中的唯一名字,它的格式为:"domain:key1=value1,key2=value2...",可根据系统的要求定义一套命名的规则。
六.编写管理框架的客户端
我们已经完成了服务器端MBean的注册工作,接下来是如何让用户能够使用这些MBean管理资源。虽然JMX的参考实现中提供了HTMLAdapter,使用户能够通过浏览器使用MBean。但是提供的界面并不是那么友好可亲,一向苛刻的客户对这绝对不会满意的。因此,编写一些简洁的访问MBean页面还是有必要的。如何通过java访问MBean,可以参阅JMX的资料,这些资料非常多。
根据上面的介绍,如果要增加对Web应用的管理功能或管理系统,基于JMX的管理框架绝对是一个非常明智的选择。
在上面第三段代码中,我们可以看到,要将MBean注册到MBean Server中必须先创建MBeanInfo,MBean的setModelMBeanInfo()用来将MBeanInfo设置到MBean中。为了能够灵活的获得MBean的信息,从而将MBean注册到MBeanServer,在O'Reilly出版的"java enterprise的最佳实践"里提到,采用XML文件对MBean描述是一种非常不错的选择方案,并且提供了一个XML描述范例,因此本文也推荐在管理Web应用也采用使用MBean描述文件的方法。实际上无论tomcat4.X,还是JBOSS,都采用使用MBean描述文件的方式创建MBean,下面提供了一个Tomcat4.x里面的MBean描述文件方案,并用该方案描述了上述提到的两个数据库连接管理的MBean。Tomcat提供了读取该描述文件的办法,具体可以参看Tomcat提供的帮助文档--如何使用MBean descriptor ( "http://jakarta.apache.org/tomcat/tomcat-4.1-doc/mbeans-descriptor-howto.html") 。
<mbean-list> <mbean name="JDBCConfigMBean" className="com.myApp.jmx.JDBCConfigMBean" description="the object to access database" domain="myapp"> <attribute name="driver" description="Jdbc driver name" type="java.lang.String" writeable="false"/> <attribute name="dburl" description="database url" type="java.lang.String"/> <attribute name="username" description="Database user name" type="java.lang.String"/> <attribute name="password" description="vthe user name's password" type="java.lang.String"/> <operation name="save" description="save the configuration" impact="ACTION" returnType="java.lang.String"> </operation> </mbean> <mbean name="DBAccess" className="com.myApp.jmx.ResInstanceMBean" description="the object to access database" domain="myapp" type="com.myApp.db.DBAccess"> <attribute name="driver" description="Jdbc driver name" type="java.lang.String" writeable="false"/> <attribute name="dburl" description="database url" type="java.lang.String"/> <attribute name="username" description="Database user name" type="java.lang.String"/> <attribute name="password" description="vthe user name's password" type="java.lang.String"/> <operation name="testConnection" description="test configure attribute" impact="ACTION" returnType="java.lang.String"> <parameter name="driver" description="Jdbc driver name for test" type="java.lang.String"/> <parameter name="username" description="Database user name for test" type="java.lang.String"/> <parameter name="password" description="the user name's password for test" type="java.lang.String"/> <parameter name="dburl" description="database url for test" type="java.lang.String"/> </operation> </mbean> </mbean-list> |
五.注册MBean
在对MBean注册前,必须得到MBean的描述信息,并且保存在MBeanInfo的实例中,否则是无法将MBean注册到MBean Server当中的,通过MBean描述文件,获得各种类型MBean的描述信息是一件非常简单的事情,而这些正是创建MBean所需要的,这样做的优点在于不需要通过编写代码,只需要修改描述文件,就可以添加新的MBean,注册的代码实际上我们之前的代码已经列出。在MBean注册时必须指定对应的ObjectName,ObjectName相当于MBean在MBean Server中的唯一名字,它的格式为:"domain:key1=value1,key2=value2...",可根据系统的要求定义一套命名的规则。
//注册mbean到MBean Server中 MBeanServer serv = getMBeanServer(); ObjectName oname = createObjectName(mbean); serv.registerMBean(mbean, oname); |
六.编写管理框架的客户端
我们已经完成了服务器端MBean的注册工作,接下来是如何让用户能够使用这些MBean管理资源。虽然JMX的参考实现中提供了HTMLAdapter,使用户能够通过浏览器使用MBean。但是提供的界面并不是那么友好可亲,一向苛刻的客户对这绝对不会满意的。因此,编写一些简洁的访问MBean页面还是有必要的。如何通过java访问MBean,可以参阅JMX的资料,这些资料非常多。
根据上面的介绍,如果要增加对Web应用的管理功能或管理系统,基于JMX的管理框架绝对是一个非常明智的选择。