- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
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;
}
文档评论(0)