浏览 3599 次
该帖已经被评为新手帖
|
|
---|---|
作者 | 正文 |
发表时间:2012-04-07
最后修改:2012-04-09
在学习Tomcat 7 的源代码的时候发现,大量运用到了JMX, MBeans,所以决定先学习一下。 介绍 JMX是Java 5开始引入的API。这个API意在帮助管理和监控资源: applications, devices, services, and the Java virtual machine. 你可以用JMX API来:
你也可以远程的访问JVM,从而远程管理和监控。 MBean, managed bean,受管的bean 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; } JMX agent, MBean server 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去尝试查询和修改。 控制台输出: Waiting forever... hello, world Cache size now 300 hello, world 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2012-04-08
有标题党嫌疑。
望lz继续补充内容。 |
|
返回顶楼 | |
发表时间:2012-04-08
我已经添加了内容,为什么这里不更新呢?难道有bug?还是我用法不当?
http://jackycheng2007.iteye.com/admin/blogs/1478182 |
|
返回顶楼 | |
发表时间:2012-04-08
JackyCheng2007 写道 我已经添加了内容,为什么这里不更新呢?难道有bug?还是我用法不当?
http://jackycheng2007.iteye.com/admin/blogs/1478182 还是看不到。 是不是你添加内容后没有发布出来啊? |
|
返回顶楼 | |
发表时间:2012-04-08
caoxudong818 写道 JackyCheng2007 写道 我已经添加了内容,为什么这里不更新呢?难道有bug?还是我用法不当?
http://jackycheng2007.iteye.com/admin/blogs/1478182 还是看不到。 是不是你添加内容后没有发布出来啊? 第一次发布以后,后面再修改都只有一个保存按钮了。你用我给你link也打不开吗? |
|
返回顶楼 | |
发表时间:2012-04-08
JackyCheng2007 写道 我已经添加了内容,为什么这里不更新呢?难道有bug?还是我用法不当?
http://jackycheng2007.iteye.com/admin/blogs/1478182 你应该是发表博客 自动选择发布到论坛,它们是不同步的,(属于两篇不同的东西) |
|
返回顶楼 | |
发表时间:2012-04-08
JackyCheng2007 写道 caoxudong818 写道 JackyCheng2007 写道 我已经添加了内容,为什么这里不更新呢?难道有bug?还是我用法不当?
http://jackycheng2007.iteye.com/admin/blogs/1478182 还是看不到。 是不是你添加内容后没有发布出来啊? 第一次发布以后,后面再修改都只有一个保存按钮了。你用我给你link也打不开吗? 用你给的链接会有一个权限错误,然后进入到你的博客列表,在里面可以看到文章内容了。 |
|
返回顶楼 | |