JMX基础知识之MBean

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

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

JMX平台定义了五种MBean

标准

动态

开放

模型

写一个标准MBEAN

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

比如我先写一个普通的JAVABean和它对应的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 xint 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[] argsthrows MalformedObjectNameException, InstanceAlreadyExistsException,

MBeanRegistrationException, NotCompliantMBeanException, InterruptedException {

MBeanServer beanServer = ManagementFactory.getPlatformMBeanServer();

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

User user = new User();

beanServer.registerMBean(userobjectName);

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();

oldpassworduser.getPassword();

}

Thread.sleep(1000);

}

}

 

}

先运行main函数。

然后启动控制台命令。

 JMX基础知识之MBean_第1张图片

然后找到我们的MBean

 JMX基础知识之MBean_第2张图片

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

这是控制台结果

null,123456

admin,123456

所以JMX的强大之处在于可以任意修改注册的MBEAN对象的属性,任意调用方法。简直逆天,这让我想起金山游侠了。哈哈!

你可能感兴趣的:(J2SE)