在学习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
- 大小: 58.8 KB
分享到:
相关推荐
Extensions to RxJava ... compile 'com.github.jacek-marchwicki.rx-java-extensions:rx-android-extensions:master-SNAPSHOT' // or use specific version compile 'com.github.jacek-marchwicki.rx-java-
The Java Management extensions
JDK9-JSE- Java Management Extensions Guide-245
JDK10-Java Platform, Standard Edition Java Management Extensions Guide-125
Java Platform, Standard Edition Java Management Extensions Guide-227
JDK11-java-management-extensions-guide
JDK15-java-management-extensions-guide
JDK13-java-management-extensions-guide
JDK19-java-management-extensions-guide
JDK12-java-management-extensions-guide
JDK14-java-management-extensions-guide
JDK17-java-management-extensions-guide
JDK16-java-management-extensions-guide
JDK18-java-management-extensions-guide
JMX可以用来管理网络,设备,应用程序等资源,当前规范为1.1版
pythontyping_extensions-4.5.0库,对应版本python3.7
标签:abdera-extensions-opensearch-1.1.3.jar,abdera,extensions,opensearch,1.1.3,jar包下载,依赖包
abdera-extensions-json-0.4.0-incubating.jar
资源分类:Python库 所属语言:Python 资源全名:typing_extensions-3.7.4.1-py3-none-any.whl 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059
JMX(Java Management Extensions)是SUN创建的一套规范。BEA WebLogic Server实现了JMX大部分的API,并且提供了一个完全兼容JMX的控制台来管理各种资源。OPEN SOURCE的应用服务器JBoss也是基于JMX来实现。并且对之评价...