一看就会系列之MBean入门

一、MBean是什么

MBean就是被jmx管理的资源。一般有两种类型的MBean,标准的和动态的。 标准类型的MBean最简单,它能管理的资源(包括属性,方法,时间)必须定义在接口中,然后MBean必须实现这个接口。它的命名也必须遵循一定的规范,例如我们的MBean为User,则接口必须为UserMBean。 动态MBean必须实现javax.management.DynamicMBean接口,所有的属性,方法都在运行时定义。这里主要介绍标准MBean。

 

二、具体代码

接口:UserMBean.java

package com.zhuyun;

public interface UserMBean {
	String getName();

	void SetName(String name);

	String getPasswd();

	void SetPasswd(String pwd);

	int add(int x, int y);
}

 

MBean: User.java

package com.zhuyun;

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

package com.zhuyun;

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 {
	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);
		}
	}

}

我们先创建一个MBeanServer,相当于一个MBean的容器。然后创建一个MBean(User),并给它取名为jmx:type=User,然后将该MBean注册到MBeanServer即可。

 

四、利用jconsole调试

打开Java自带的调试工具jconsole,连接到该进程中,会看到有一个MBean的选项,我们点击进去

 

就会看到我们刚才创建的那个MBean,以及它所有的属性和方法

 

我们选择Name,发现它当前值为空

 

选择下面的SetName,将Name设置为infi

 

再查看Name的值,发现已经被修改成功

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值