没有合适的资源?快使用搜索试试~ 我知道了~
JMX(Java Management Extensions,即Java管理扩展)
4星 · 超过85%的资源 需积分: 43 12 下载量 60 浏览量
2013-03-15
00:02:03
上传
评论
收藏 362KB PDF 举报
温馨提示
试读
36页
JMX(Java Management Extensions,即Java管理扩展)是一个为应用程序、设备、系统等植入管理功能的框架。JMX可以跨越一系列异构操作系统平台、系统体系结构和网络传输协议,灵活的开发无缝集成的系统、网络和服务管理应用。
资源推荐
资源详情
资源评论
1、
JMX 的 Hello World
一、JMX 简介
什么是 JMX?在一篇网文中是这样说的:"JMX(Java Management Extensions)
是一个为应用程序植入管理功能的框架。JMX 是一套标准的代理和服务,实际上,
用户可以在任何 Java 应用程序中使用这些代理和服务实现管理",这句话我现
在看着还是不知所云,云里雾里。
我们还是从 JMX 能给我们提供什么好处入手来理解吧。举一个应用实例:
在一个系统中常常会有一些配置信息,比如服务的 IP 地址,端口号什么的,那
么如何来写这些代码呢?
1.
程序初哥一般是写死在程序里,到要改变时就去改程序,然后再编译发
布;
2.
程序熟手则一般把这些信息写在一个配置文件里(JAVA 一般都是
*.properties 文件),到要改变时只要改配置文件,但还是重新启动系
统,以便读取配置文件里的新值;
3.
程序好手则会写一个段代码,把配置值缓存起来,系统在读值的时候,
先看看配置文件有没有更动。如有更改则重读一遍,否则从缓存里读取
值
4.
程序高手则懂得取物为我所用,用 JMX!把配置属性集中在一个类,然后
写一个叫 MBean 的东东,再配置一下就轻松搞定了。而且 JMX 自动提供
了一个 WEB 页面来给你来改变这些配置信息。
二、准备工作
JMX 是一份规范,SUN 依据这个规范在 JDK(1.3、1.4、5.0)提供了 JMX 接
口。而根据这个接口的实现则有很多种,比如 Weblogic 的 JMX 实现、MX4J、JBoss
的 JMX 实 现 。在 SUN 自己也实现了一份,不过在 JDK1.4 之前,这件 JMX 实 现( 一
些 JAR 包)是可选的,你得去 它的网站上下载。JDK5.0 则内嵌了进来,安装
JDK5.0 就可以开发基于 JMX 的代码了。
但 JDK5.0 并非包含所有 SUN 的关于 JMX 的代码,有一些工具类是排除在
JDK5.0 之外的。下面根据所使用的 JDK 版本情况,谈一谈开发环境的准备。
1、JDK1.3、1.4
去SUN网站下载SUN的JMX实现,共两个ZIP文件,下载网
址:http://java.sun.com/products/JavaManagement/download.html。
(1)jmx-1_2_1-ri.zip
解压后的 lib 目录包含:jmxri.jar、jmxtools.jar
(2)jmx_remote-1_0_1_03-ri.zip
解压后的 lib 目录包含:jmxremote.jar、jmxremote_optional.jar、
rmissl.jar
如果在 DOS 下用命令行开发,则把这五个 JAR 包加入到 classpath 系统变
量中。如果你用 Eclipse 开发,则把 JAR 包加入到项目属性的 Libratries(库)
引用中。
2、JDK5.0
JDK5.0 的 jre\lib\rt.jar 已经包含了 jmxri.jar、 jmxremote.jar、
rmissl.jar 三个包的代码。如果你用到 jmxtools.jar、jmxremote_optional.jar
的 类,则需要将这两个类加入到 classpath 或 Eclipse 的项目库引用中。
3、我使用的开发环境:JDK5.0 + Eclipse3.2。
注:因为用到 jmxtools.jar 中的 HtmlAdaptorServer 类,所以将此包加入
到项目库引用中。jmxremote_optional.jar 暂时不用到,不管它。
三、HelloWorld 实例
1、Hello 是一个需要被管理的类(普通类)
java 代码
1.
package com.sunhill.jmx;
2.
3.
public class Hello implements HelloMBean {
4.
private String name;
5.
6.
public String getName() {
7.
return name;
8.
}
9.
10.
public void setName(String name) {
11.
this.name = name;
12.
}
13.
14.
public void printHello() {
15.
System.out.println("Hello World, " + name)
;
16.
}
17.
18.
public void printHello(String whoName) {
19.
System.out.println("Hello , " + whoName);
20.
}
21.
}
2、要管理 Hello 则必须创建一个相应 MBean,如下:
java 代码
1.
package com.sunhill.jmx;
2.
3.
public interface HelloMBean {
4.
public String getName();
5.
6.
public void setName(String name);
7.
8.
public void printHello();
9.
10.
public void printHello(String whoName);
11.
}
说明:包含在 MBean 中方法都将是可以被管理的。MBean 起名是有规范的,就是
原类名后加上 MBean 字样。
3、创建一个 Agent 类
java 代码
1.
package com.sunhill.jmx;
2.
3.
import java.lang.management.ManagementFactory;
4.
5.
import javax.management.MBeanServer;
6.
import javax.management.ObjectName;
7.
8.
import com.sun.jdmk.comm.HtmlAdaptorServer;
9.
10.
public class HelloAgent {
11.
public static void main(String[] args) throws Ex
ception {
12.
// MBeanServer server = MBeanServerFactory.creat
eMBeanServer();
13.
MBeanServer server = ManagementFactory.getP
latformMBeanServer();
14.
ObjectName helloName = new ObjectName("
che
ngang
:name=HelloWorld");
15.
server.registerMBean(new Hello(), helloName)
;
16.
ObjectName adapterName = new ObjectName(
17.
"HelloAgent:name=htmladapter,p
ort=8082");
18.
HtmlAdaptorServer adapter = new HtmlAdapto
rServer();
19.
server.registerMBean(adapter, adapterName);
20.
adapter.start();
21.
System.out.println("start.....");
22.
}
23.
}
说明:
•
先创建了一个 MBeanServer,用来做 MBean 的容器
•
将 Hello 这个类注入到 MBeanServer 中,注入需要创建一个 ObjectName
类
•
创建一个 AdaptorServer,这个类将决定 MBean 的管理界面,这里用最普
通的 Html 型界面。AdaptorServer 其实也是一个 MBean。
•
ghl:name=HelloWorld 的名字是有一定规则的,格式为:“域
名:name=MBean 名称”,域名和 MBean 名称都可以任意取。
4、运行HelloAgent,然后打开网页:http://localhost:8082/,看效果!
五、总结
在实际系统中我们可以把 name 变成决定数库链接池的变量,这样我就可以
对系统的运行参数进行实现的监控和配置(管理)。而且也可以对一些方法(如
printHello)进行远程调用了。
2、
JMX 简介
一、JMX 简介
JMX 是一种 JAVA 的正式规范,它主要目的是让程序且有被管理的功能,那
么怎么理解所谓的“被管理”呢?试想你开发了一个软件(如WEB网 站),
它是在24小时不简断运行的,那么你可能会想要“监控”这个软件的运行情况,
比如收到了多少数据,有多少人登录等等。或者你又想“配置”这个软件, 比
如现在访问人数比较多,你想把数据连接池设置得大一些。
当然,你也许会专门为这些管理来开发软件,但如果你借助 JMX,则会发现
创建这样的管理程序是如此简单。因为你无需为管理程序来开发界面,已经 有
通用的 JMX 管理软件,如 MC4J,或者是用一般都附带提供的 HTML 网页来管理,
你要做的仅仅是将自己要被管理和监控类的按照 JMX 规范修改一下即 可。
中间件软件 WebLogic 的管理页面就是基于 JMX 开发的,而 JBoss 则整个系
统都基于 JMX 构架。下面将 JMX 的一些概念,从 JMX 规范转帖如下:
二、JMX 构架中的各层及相关的组件
1. 工具层(Instrumentation Level)
2. (a) MBeans(标准的,动态的,开放的和模型 MBeans)
3. (b) 通知模型:Notification、NotificationListener 等类
4. (c) MBean 元数据类:Attribute、Opreator 等类
5. 代理层(Agent Level)
6. (a) MBean Server
7. (b) 代理服务。如前一篇的 HtmlAdaptorServer 等。
MBean 中有 getter 和 setter 的就是属性,如前一篇的 Hello 类中 Name。如
果只有 getter 则表示该属性只读。一共有四种 MBean,如下:
1. 标准 MBeans(Standard MBeans)设计和实现是最简单的,这类 MBean 使
用自己的方法名作为管理接口;
2. 动态 MBeans(Dynamic MBeans)必须实现一个指定的接口,由于动态 MBeans
在运行期间暴露它们的管理接口,因此更为灵活;
3. 开放 MBeans(Open MBeans)属于动态 MBeans,这类 MBean 依靠基础数据
类型来实现通用管理,并为友情用户进行自我声明;
4. 模型 MBeans(Model MBeans)同样也是动态 MBeans,这类 MBeans 是完全
可配置的,在运行期间进行自我声明;它们为资源动态工具提供一个一般
性的,有默认行为的 MBeans 类。
在前一篇中的 Hello、HelloMBean 就是一个标准 MBeans(Standard MBeans)。
后面接下来的几篇,我们会继续介绍其他几种 MBean。
3、
Notification 的使用
一、简介
Mbean 之间的通信是必不可少的,Notification 就起到了在 Mbean 之间沟通
桥梁的作用。JMX notification 由四部分组成:
• Notification 这个相当于一个信息包,封装了需要传递的信息
• Notification broadcaster 这相当于一个广播器,把消息广播出去
• Notification listerner 这是一个监听器,用于监听广播出来的
Notification 消息
• Notification filter 这是一个过滤器,过滤掉不需要的 Notification
消息
Notification broadcaster 不需要我们实现,JMX 的内部已经有了。
Notification filter 一般也很少用。下面的例子主要用到了 Notification、
Notification listerner。
剩余35页未读,继续阅读
资源评论
- 魏大宾2014-02-10JMX的书不多,这本书可以用一下。
- mary542013-05-27不错,很详细,正是要找的那个……
- Jimmy6132013-07-10不错,很详细
- canjiahuodong2013-08-30不错,最近正好接触了有关JMX的东东,需要先学习一下JMX的相关知识
hanchunlinanbaichao
- 粉丝: 0
- 资源: 6
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功