jmx之MBean入门

JMX是一个Java的管理工具,可以实现的功能主要是对Java程序的管理。

JMX需要很多MBean和很多MXBean。同时也需要一个JMX服务器。

一个MBean代表一个被管理对象。这个对象需要暴露一些供读写的属性,以及可以调用的方法。

下面介绍下MBean,分为4种:标准、动态、开放、模型。

简单介绍下标准MBean程序:

标准MBEAN是有侵入性的,他要管理的对象是符合JAVA BEAN规范的对象。但是要作为标准MBEAN而被管理,就需要实现一个接口。这个接口的名称必须是类名加上MBean。

UserMBean.java(MBEAN接口):

package jmx;

public interface UserMBean {
String getName();
void SetName(String name);
String getPasswd();
void SetPasswd(String pwd);
int add(int x, int y);

}


User.java(JAVA Bean):

package jmx;
public class User implements UserMBean{
    private String name;
    private String passwd;
@Override
public String getName() {
return name;
}
@Override
public void SetName(String name) {
this.name=name;
}
@Override
public String getPasswd() {
return passwd;
}
@Override
public void SetPasswd(String pwd) {
this.passwd=pwd;
}
@Override
public int add(int x, int y) {
return x+y;
}
}

JMXdemo.java(main方法):

package jmx;
import java.lang.management.ManagementFactory;
import javax.management.InstanceAlreadyExistsException;
import javax.management.MBeanRegistrationException;
import javax.management.MBeanServer;
import javax.management.MalformedObjectNameException;
import javax.management.NotCompliantMBeanException;
import javax.management.ObjectName;
public class JMXdemo {

/**
* @param args
* @throws NullPointerException 
* @throws MalformedObjectNameException 
* @throws NotCompliantMBeanException 
* @throws MBeanRegistrationException 
* @throws InstanceAlreadyExistsException 
* @throws InterruptedException 
*/
public static void main(String[] args) throws MalformedObjectNameException, NullPointerException, InstanceAlreadyExistsException, MBeanRegistrationException, NotCompliantMBeanException, InterruptedException {
MBeanServer server=ManagementFactory.getPlatformMBeanServer();
ObjectName objectName=new ObjectName("jmx:type=User");
User bean=new User();
server.registerMBean(bean, objectName);
String oldName=null;
String oldPwd=null;
System.out.println("jmx started!!!");
while(true){
if(oldName!=bean.getName()|| oldPwd !=bean.getPasswd()){
System.out.println(bean.getName()+":"+bean.getPasswd());
oldName=bean.getName();
oldPwd=bean.getPasswd();
}
Thread.sleep(1000);
}
}

}

运行main方法:

   注意:在vm arguments中添加“-Dcom.sun.management.jmxremote"

启动jconsole,到java家目录的bin下,双击jconsole.exe

jmx之MBean入门_第1张图片

如上图红框双击进入即可,

jmx之MBean入门_第2张图片

你可以通过操作的方法修改属性值,同时也可以在控制台上看到输出,刷新属性也可以看到。

通过操作可以看到如下

null:ww
root:ww

root:root


你可能感兴趣的:(jmx之MBean入门)