列宿乃施于上荣兮 日月才经于柍桭
………… 白驹过隙 岁月如斯 梦萦回绕 心灵之声
posts - 57, comments - 8, trackbacks - 0, articles - 41
BlogJava
::
首页
::
新随笔
::
联系
::
聚合
::
管理
Spring中JMX技术的应用
Posted on 2010-06-18 11:56
默认为零
阅读(2285)
评论(0)
编辑
收藏
所属分类:
技术
JMX(Java Management Extensions)即Java管理扩展,这是一种动态管理对象及属性的集成框架。JMX增强了系统的可配性,在不对该系统进行重启的情况下,修改相关的MBean属性值即可生效,例如日志信息级别的配置等基础数据的配置,形成动态效果。
简单了解下相关的概念:
MBean是Managed Bean的简称,在JMX中MBean代表一个被管理的资源实例。
MBeanServer是MBean的容器,JMX规范中MBeanServer对外提供了灵活的注册和访问MBean的机制。
JMX体系架构可以理解为三个层次:设备层、代理层和分布层。设备层定义了需要管理的信息模型,也就是MBean,包括他的接口定义和相应开发规范等等。代理层核心是一个MBeanServer,它用来管理相应的信息模型,并且为访问者提供了访问接口。分布层定义了一系列用来访问代理层的接口和组件,供管理者使用。(见下图)
这里举个例子简单介绍下Spring框架中JMX技术的集成应用:
1.定义MBean Interface ParameterMBean
package
com.huateng.mbean;
public
interface
ParameterMBean
{
/** */
/**
默认的线程池规模
*/
int
THREAD_POOL_SIZE
=
2
0
;
void
setThreadPoolSize(
int
size);
int
getThreadPoolSize();
}
2.实现ParameterMBean
package
com.huateng.mbean;
public
class
Parameter
implements
ParameterMBean
{
int
threadPoolSize
=
THREAD_POOL_SIZE;
/**/
/*
* (non-Javadoc)
* @see com.huateng.mbean.ParameterMBean#getThreadPoolSize()
*/
@Override
public
int
getThreadPoolSize()
{
return
threadPoolSize;
}
/**/
/*
* (non-Javadoc)
* @see com.huateng.mbean.ParameterMBean#setThreadPoolSize(int)
*/
@Override
public
void
setThreadPoolSize(
int
size)
{
this
.threadPoolSize
=
size;
}
}
3.在Spring applicationContext.xml配置中定义Parameter
<?
xml version="1.0" encoding="UTF-8"
?>
<
beans
xmlns
="http://www.springframework.org/schema/beans"
xmlns:xsi
="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation
="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd"
>
<
bean
id
="log4j"
class
="org.apache.log4j.jmx.HierarchyDynamicMBean"
/>
<
bean
name
="log4j:logger=com.huateng"
class
="org.springframework.beans.factory.config.MethodInvokingFactoryBean"
depends-on
="jmxExporter"
>
<
property
name
="targetObject"
ref
="log4j"
/>
<
property
name
="targetMethod"
value
="addLoggerMBean"
/>
<
property
name
="arguments"
value
="com.huateng"
/>
</
bean
>
<
bean
id
="htmlAdaptor"
class
="com.sun.jdmk.comm.HtmlAdaptorServer"
init-method
="start"
>
<
constructor-arg
index
="0"
value
="9070"
/>
<
constructor-arg
index
="1"
>
<
bean
id
="authInfo"
class
="com.sun.jdmk.comm.AuthInfo"
>
<
property
name
="login"
value
="admin"
/>
<
property
name
="password"
value
="admin"
/>
</
bean
>
</
constructor-arg
>
</
bean
>
<
bean
id
="mbeanServer"
class
="org.springframework.jmx.support.MBeanServerFactoryBean"
>
<
property
name
="locateExistingServerIfPossible"
value
="false"
/>
<
property
name
="defaultDomain"
value
="GSP"
/>
</
bean
>
<
bean
id
="jmxExporter"
class
="org.springframework.jmx.export.MBeanExporter"
>
<
property
name
="beans"
>
<
map
>
<
entry
key
="log4j:hiearchy=default"
>
<
ref
local
="log4j"
/>
</
entry
>
<
entry
key
="com.huateng.gsp:name=htmlAdaptor"
>
<
ref
local
="htmlAdaptor"
/>
</
entry
>
<
entry
key
="com.huateng.gsp:name=hibernate"
>
<
ref
local
="hibernate"
/>
</
entry
>
<
entry
key
="com.huateng.gsp:name=statistics"
>
<
ref
local
="statistics"
/>
</
entry
>
<
entry
key
="com.huateng.gsp:name=parameter"
>
<
ref
local
="parameter"
/>
</
entry
>
</
map
>
</
property
>
<
property
name
="server"
>
<
ref
local
="mbeanServer"
/>
</
property
>
</
bean
>
<
bean
id
="parameter"
class
="com.huateng.mbean.Parameter"
/>
<
bean
id
="hibernate"
class
="org.hibernate.jmx.HibernateService"
/>
<
bean
id
="statistics"
class
="org.hibernate.jmx.StatisticsService"
/>
</
beans
>
好了Spring应用启动后在浏览器中输入:
http://localhost:9070
(admin/admin)
是不是可以看到刚才定义的Parameter对象属性了。
简单说明一下:
1)HtmlAdaptorServer是SUN JDMK工具包中提供的JMX Adaptor,通过它实现对指定MBeanServer中MBean对象的输出和访问控制。
2)在这个例子中顺便把Hibernate引擎所内置的两个MBean对象给输出了,HibernateService和StatisticsService。
3)定义MBeanServer的时候,locateExistingServerIfPossible标志为true的时候表示在应用所在容器中查找已有的MBeanServer,如果有存在则将当前MBean注册其中,其实就是复用MBeanServer。比如在Tomcat和Websphere中都会将容器内置的MBeanServer(包括它内置和Parameter等MBean)在Adaptor中输出。
此外JMX规范中提供了其它非常实用的特性比如:
1)持久性
定义了持久机制,可以利用Java的序列化或JDBC来存储模型MBean的状态。
2)通知和日志功能
能自动发出属性变化通知,并能记录每一个发出的通知等。
新用户注册
刷新评论列表
只有注册用户
登录
后才能发表评论。
网站导航:
博客园
IT新闻
Chat2DB
C++博客
博问
管理
相关文章:
Linux下Shell脚本完善
一次小小的jconsole远程监控故障排查
小试Eclipse性能调优
JFreeChart结合AJAX实现的WEB实时监控效果
iBatis与Hibernate使用比较
Spring中的事务应用
Spring中JMX技术的应用
对于SOA、SaaS的理解
Maven2的依赖库管理
暴力破解常见技巧
Powered by:
BlogJava
Copyright © 默认为零
日历
<
2010年6月
>
日
一
二
三
四
五
六
30
31
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
1
2
3
4
5
6
7
8
9
10
公告
平凡之人悟非平凡之事,升华之道也。
本坛实乃杂烩,工作、生活、育儿、健身,指哪打哪,想哪写哪!
常用链接
我的随笔
我的文章
我的评论
我的参与
最新评论
留言簿
(6)
给我留言
查看公开留言
查看私人留言
随笔分类
(105)
健身(5)
感悟(10)
技术(34)
投资(5)
生活(8)
电影(1)
育儿(2)
转帖(31)
饮食(9)
随笔档案
(67)
2010年10月 (4)
2010年9月 (1)
2010年8月 (2)
2010年7月 (8)
2010年6月 (2)
2010年5月 (5)
2009年10月 (1)
2009年7月 (2)
2009年5月 (1)
2008年9月 (7)
2008年8月 (3)
2008年7月 (8)
2008年5月 (1)
2008年2月 (2)
2007年10月 (6)
2007年9月 (4)
2007年8月 (1)
2007年6月 (1)
2007年5月 (1)
2007年4月 (7)
搜索
积分与排名
积分 - 30539
排名 - 1367
最新随笔
1. 《活法》读后感
2. Linux下Shell脚本完善
3. 一次小小的jconsole远程监控故障排查
4. 炒股启示录
5. 助眠饮食
6. 买基金有技巧
7. 强大的酷睿i7四核处理器
8. 小试Eclipse性能调优
9. 多吃鱼有好处
10. 夏季饮食先开胃
最新评论
1. re: 基于Axis 1.X的Web Service开发(三)[未登录]
受教了,转了,谢谢博主
--初学者
2. re: 健身气功之八段锦
很好,老少皆宜。
--niuwei
3. re: 体验阿里文化有感
“成群结队的漂亮mm”不错,我们这里找个mm太难了,何况还要是漂亮的。
--叱咤红人
4. re: lenovo i908手机上网
根本就连接不了拨号根本就拨不上去,不要骗人
--56465465465
5. re: lenovo i908手机QQ
我也是用的908下载的QQ版本2008版的升级后用了一段时间还上不了了,希望大家帮忙早一个好点的版本
--马莉莉
阅读排行榜
1. Spring中JMX技术的应用(2285)
2. JFreeChart结合AJAX实现的WEB实时监控效果(2059)
3. 《活法》读后感(1972)
4. Java实现FTP传输文件(一)(1120)
5. lenovo i908手机上网(1073)
评论排行榜
1. lenovo i908手机上网(3)
2. 基于Axis 1.X的Web Service开发(三)(1)
3. 健身气功之八段锦(1)
4. 货币原理及人民币升值问题的阐述(1)
5. lenovo i908手机QQ(1)