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对象的属性,任意调用方法。简直逆天,这让我想起金山游侠了。哈哈!
一个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对象的属性,任意调用方法。简直逆天,这让我想起金山游侠了。哈哈!
相关文章推荐
- duilib库-----消息流程分析
- php通过post获取二进制流并生成文件
- like 大数据字段 查询慢
- [bat]批处理删默认共享和清理垃圾
- MySQL中的insert ignore into, replace into等的一些用法总结
- 使用Gradle构建Java项目
- ocx
- 读classloader笔记
- Ubuntu 安装之后要做的事
- Android RecyclerView 的基本使用
- linux_find15个常用的命令
- Java基础之封装、继承、多态、接口详解
- 钓鱼邮件初探:黑客是如何进行邮件伪造的?
- 判断一个点是否在旋转过任意角度的矩形内
- Kean博客2006年9月-2007年8月链接
- [转载]深入了解 Struts 1.1
- IO库 8.6
- java调用c++生成的动态和静态库时遇到的问题
- IOS之未解问题--给UITableView提取UITableViewDataSource并封装瘦身失败
- JavaScript入门经典 学习笔记