《Java分布式应用学习笔记08JMX规范与各种监控场景》.pdf
文本预览下载声明
nJava 分布式应用学习笔记 08JMX 规范与各种监控场景
刘岩
Email:suhuanzheng7784877@163.com
Blog:
1. JMX 规范
JMX 是“Java 管理扩展的”的缩写,它和其他 JavaEE 类似也是曾经的 Sun 提出的一种规
范(规约),从名字上可以看出主要是负责系统管理。是一个为系统加入或者说扩展成
有管理功能的规约,只要按照这套规约行事,您的系统,某些某块就具备被其他工具
(例如JConsole)管理的能力。换句话说就是可以用JMX 来监控咱们的系统运行情况,
还有可以在运行时环境像 Web Service、RMI 一样调用系统管理类的一些方法。实现此规
范的框架也很多:Spring、Tomcat、JBoss 容器……
2. 场景简述
咱们先假设一个情景,夫妻二人。男的因为工作需要要去外地出差,因公司规定,出差
不能带家属,女方不能跟过去啊。所以女方给他们 2 个人一个手机——HTC 吧。里面有个
小程序,叫做 JMXImpl4Android。等到男方出差在外地了,在外地出差的城市,一天晚上
和同事散步,路上遇到个发廊(各位男性朋友明白的啊)。此时远在另一个城市的妻子
的手机突然响了,手机GIS 定位信息告知妻子:“您的丈夫在一个发廊门前徘徊,请注
意”。妻子急了,立刻给丈夫打电话:“你干嘛呢?”。丈夫战战栗栗,汗出如浆,乖乖
的回酒店玩DOTA 了!
我们来用 Java 消息扩展的视角来看看这个场景,咱们伟大一些相当于那个妻子,那个
丈夫就相当于咱们的系统,出差事件相当于咱们将系统部署到了真正的远程的运行环境,
妻子曾 HTC 手机给丈夫您可以理解成把丈夫打 成具有 JMX 规范的系统,换句话说:此
丈夫可监控。因为一个小小的 GIS 应用就能让妻子随时监控丈夫的状态——想邪恶一把,
并且还可以根据系统的状态进行相应的措施——打电话告诉丫的别想出轨,虽然新的婚
姻法下来了,但是房子是老娘买的,出轨?你试试!
看到这里,大家估计明白了JMX 是什么东西,干什么用的了。但是估计大家有一个疑问,
这个和 Java 分布式系统有什么关系啊?在分布式系统中有时候我们需要监控各个分机
器的状态,比如想知道机器此时此刻的 Tomcat 的运行状况如何,还可以根据状况调用
相关的操作,比如 shutdown 服务、去除已部署的web 工程等等与服务有关的操作。或者
对于调度这些节点机的主控机器也可以进行监控,在远程使用一个 JConsole 调用即可 。
Ok,说了这么多,我们看示例吧,最后再来用实例解释JMX 的那些晦涩的理论概念。
3. 监控本机程序
这种场景在实际中不太常用,对于本机的程序来说,需要监控,按需调用被托管的类方
法还真不多。
相当于丈夫就在你面前,他的一举一动都在你眼皮底下,你还需要一个 Android 小程序
去监控他吗?笔者使用的是 Spring3 的实现。所以先将Spring 的包下载下来,放到项目
的classpath 中。
咱们先写一个最普通的JavaBean
package jmx;
1 / 9
public class HusbandLocal {
// 属性
private String name;
private int age;
private String message;
// set,get
public String getName() {
System.out.println(name: +name);
return name;
}
public void setName(String name) {
= name;
}
public int getAge() {
System.out.println(age: +age);
return age;
}
显示全部