GlassFish中的JMX应用
[JMX是什么]
JMX是什么?简单的来说,JMX就是一套对应用程序和资源管理的框架。
比如,一个大型的应用服务器系统,里面有各种各样的资源,数据库连接池,JMS,线程池,Http引擎,系统的核心应该如何管理这么多资源呢?
在Sun的开源服务器中,运用了JMX技术。具体如何实现呢?
1.首先,把一个个应用程序和资源虚拟成对应的MBean,所谓的MBean就是提供针对资源访问接口的JavaBean。
2.接下来,通过JMX体系,把这一个个MBean注册到一个统一的MBeanServer中间去,这样就把所有的资源归纳管理到同样的一个服务中间去。
3.当我们要配置或者访问具体资源的时候,我们可以通过访问MBeanServer,调用具体的MBean,然后调用访问函数达到我们的目标。
[实践 新建一个自己的MBean]
我们不光要说说理论,我们还要动手,我们来尝试在GlassFish的源代码中间,加入我们自己的新的MBean。
1. 下载GlassFish源代码
http://developers.sun.com.cn/glassfish/
2. 找到以下目录,在其中加入自己新建的MBean类
[glassfish\admin-ee\mbeans\src\java\com\sun\enterprise\ee\admin\mbeans]
具体的程序代码如下:
/** * Deployment MBean for SE/EE. * * @author Jiang Biao */ public class NewEEApplicationsConfigMBean {
//テストするため関数である public void TestMethou(String clusterName) { //getClustersConfigBean().stopCluster("Test"); }
} |
以上的程序代码就是我们自己追加模拟的一个用来配置服务器参数的MBean,这个MBean很简单,只有一个函数TestMethou()
那么是不是我们追加了这个MBean就可以呢?当然不是,我们还要让这个MBean在服务器启动的时候注册到MBeanServer中间去,那么应该怎么做呢?请看以下
3. 修改配置文件,让MBean注册到服务中去
我们找到以下的xml文件,然后在其中追加我们的新MBean的注册
[glassfish\admin-core-ee\dtds\build\admin-mbeans-descriptors-ee.xml]
<!-- +++++++++ 2. applications +++++++++++ --> <mbean className="com.sun.enterprise.ee.admin.mbeans.NewEEApplicationsConfigMBean" group="config" name="applications"> <descriptor> <field name="ObjectName" value="{0}:type=applications,category=newconfig"/> <field name="xpath" value="/domain/applications"/> <field name="CLIName" value="domain.applications"/> </descriptor> </mbean> |
这样,当服务器主进程启动的时候,我们就能通过以上的这个XML文件读取和注册MBean。
4. 修改服务器命令配置,让我们可以通过服务器命令行启动调用我们的MBean
我们在glassfish\admin-cli\commands\build下面找到[CLIDescriptor.xml]文件,然后修改这个文件,加上我们的MBean配置
(GlassFish的命令传达体系架构我会专门写个文章讲述)
5. 最后我们启动和调用cmd,就能调用我们的MBean拉