Java Management Extensions (JMX) 学习笔记- 程序管理和监控

14 篇文章 0 订阅
在学习Tomcat 7 的源代码的时候发现,大量运用到了JMX, MBeans,所以决定先学习一下。
[size=medium]介绍[/size]
JMX是Java 5开始引入的API。这个API意在帮助管理和监控资源: applications, devices, services, and the Java virtual machine. 你可以用JMX API来:
[list]
[*] 查询和修改应用配置
[*] 应用行为统计
[*] 状态改变和出错通知
[/list]
你也可以远程的访问JVM,从而远程管理和监控。
[size=medium]MBean, managed bean,受管的bean[/size]
Mbean其实也是一种Java Bean,特别之处就在于它是在管理之下的。所谓受管就是说它提供了读写的API。有四种MBean:standard MBeans, dynamic MBeans, open MBeans and model MBeans. 下面是一个standard MBeans的例子:
先定义接口:

package com.example.mbeans;

public interface HelloMBean {

public void sayHello();
public int add(int x, int y);

public String getName();

public int getCacheSize();
public void setCacheSize(int size);
}

再定义实现:

package com.example.mbeans;

public class Hello implements HelloMBean {
public void sayHello() {
System.out.println("hello, world");
}

public int add(int x, int y) {
return x + y;
}

public String getName() {
return this.name;
}


public int getCacheSize() {
return this.cacheSize;
}

public synchronized void setCacheSize(int size) {
this.cacheSize = size;

System.out.println("Cache size now " + this.cacheSize);
}

private final String name = "Reginald";
private int cacheSize = DEFAULT_CACHE_SIZE;
private static final int DEFAULT_CACHE_SIZE = 200;
}

[size=medium]JMX agent, MBean server[/size]
MBean是通过注册在JMX agent,也就是 MBean server中,从而被暴露出去而被管理的。
下面是这个agent 的使用实例:

package com.example.mbeans;

import java.lang.management.*;
import javax.management.*;

public class Main {

public static void main(String[] args) throws Exception {

MBeanServer mbs = ManagementFactory.getPlatformMBeanServer();

ObjectName name = new ObjectName("com.example.mbeans:type=Hello");

Hello mbean = new Hello();

mbs.registerMBean(mbean, name);

System.out.println("Waiting forever...");
Thread.sleep(Long.MAX_VALUE);
}
}


运行Main类,之后它就等待被访问和修改。你可以用jconsole去尝试查询和修改。

[img]http://dl.iteye.com/upload/attachment/0066/1583/659a14ec-c27c-3b20-8208-41a16599ef09.png[/img]

控制台输出:


Waiting forever...
hello, world
Cache size now 300
hello, world

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值