您的位置:首页 > 其它

JMX基础知识之MBean

2016-01-07 15:58 225 查看
JMX需要很多MBean和很多MXBean。同时也需要一个JMX服务器。

一个MBean代表一个被管理对象。

JMX平台定义了五种MBean。

1 标准

2 动态

3 开放

4 模型

写一个标准MBEAN。

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

比如我先写一个普通的J***ABean和它对应的MBean接口。

package jmxdemo;



public class User implements UserMBean {



private String username;

private String password;

public String getUsername() {

return username;

}

public void setUsername(String username) {

this.username = username;

}

@Override

public String getPassword() {

return password;

}

@Override

public void setPassword(String password) {

this.password = password;

}

public int add(int x, int y) {

return x+y;

}

}

package jmxdemo;



public interface UserMBean {



String getUsername();



void setUsername(String username);



String getPassword();



void setPassword(String password);



int add(int x,int y);

}

然后我们写个MAIN函数,注册这个BEAN,然后观察结果。

public class JMXDemo {



public static void main(String[] args) throws MalformedObjectNameException, InstanceAlreadyExistsException,

MBeanRegistrationException, NotCompliantMBeanException, InterruptedException {

MBeanServer beanServer = ManagementFactory.getPlatformMBeanServer();

ObjectName objectName = new ObjectName("jmxdemo:type=User");

User user = new User();

beanServer.registerMBean(user, objectName);

String oldusername = null;

String oldpassword = null;

while(true){

if(oldusername!=user.getUsername()||oldpassword!=user.getPassword()){

System.out.println(user.getUsername()+","+user.getPassword());

oldusername = user.getUsername();

oldpassword= user.getPassword();

}

Thread.sleep(1000);

}

}



}

先运行main函数。

然后启动控制台命令。




然后找到我们的MBean。




随后任意修改用户名和密码,敲回车结束,控制台就会打印数据。

这是控制台结果

null,123456

admin,123456

所以JMX的强大之处在于可以任意修改注册的MBEAN对象的属性,任意调用方法。简直逆天,这让我想起金山游侠了。哈哈!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: