欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

JMX详解

程序员文章站 2022-07-09 12:43:10
...

一、模型

JMX(Java Management Extensions,即Java管理扩展)是一个为应用程序、设备、系统等植入管理功能的框架,JMX的核心类是MBean(准确说是接口),用来描述一个可管理的资源


JMX的三层架构图

JMX详解


 

Probe Level负责资源的检测(获取信息),包含MBeans,通常也叫做Instrumentation Level。

The Agent Level 或者叫做MBean Server(代理服务器) ,是JMX的核心,连接Mbeans和远程监控程序。

Remote Management Level通过connectors和adaptors来远程操作MBean Server。



二、简单实例


1.建立一个需要被JMX管理的类Hello

Java代码

package bcndly.test.jmx;    
   
public class Hello implements HelloMBean {    
        
    private String name;    
   
    public String getName() {    
        return name;    
    }    
   
    public void printHello() {    
        System.out.println("Hello, " + name);    
    }    
   
    public void printHello(String theName) {    
        System.out.println("Hello, " + theName);    
    }    
   
    public void setName(String name) {    
        this.name = name;    
    }    
   
}


2.建立Hello类的MBean接口

接口名必须是要管理的类名+MBean,接口定义了要暴露的属性和方法

Java代码

package bcndly.test.jmx;    
   
public interface HelloMBean {    
        
    public String getName();    
   
    public void setName(String name);    
   
    public void printHello();    
   
    public void printHello(String theName);    
}


3.创建一个Agent类

Java代码

package bcndly.test.jmx;    
   
import javax.management.MBeanServer;    
import javax.management.MBeanServerFactory;    
import javax.management.ObjectName;    
   
import com.sun.jdmk.comm.HtmlAdaptorServer;    
   
public class HelloAgent {    
   
    public static void main(String[] args) throws Exception {    
        MBeanServer server = MBeanServerFactory.createMBeanServer();    
        ObjectName helloName = new ObjectName("bcndyl:name=HelloWorld");    
        server.registerMBean(new Hello(), helloName);    
        ObjectName adapterName = new ObjectName("HelloAgent:name=htmladapter");    
        HtmlAdaptorServer adapter = new HtmlAdaptorServer();   
        adapter.setPort(8091);
        server.registerMBean(adapter, adapterName);    
        adapter.start();    
        System.out.println("start.....");    
    }   
   
}

首先获得MBean Server,之后便可将需要管理的MBean注册到MBean Server中,注册MBean需要定义其对象名称,对象名称类型为ObjectName,这里对象名称必须由域名加一个或多个键值对组成,这里bcndyl为域名,后面的即为键值对。最后我们让线程保持睡眠,以便可以让Manager连接过来管理暴露的MBean。


4.管理MBean

运行HelloAgent,打开IE输入http://localhost:8091就可以看到注册的MBean

JMX详解

点击MBean对象后可以管理对象的属性和方法JMX详解




测试方法printHello,eclipse控制台打印对应信息

JMX详解


说明:

  • HtmlAdaptorServer在jmxtools.jar包中

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

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

  • AdaptorServer,这个类将决定MBean的管理界面,这里用最普通的Html型界面。AdaptorServer其实也是一个MBean




本文出自 “点滴积累” 博客,请务必保留此出处http://tianxingzhe.blog.51cto.com/3390077/1651588