现在大部分企业的应用程序都需要application提供监视程序运行的健康状况和硬件状况的功能。举个例子,前段时间做的一个项目,需要在一台机器上监视几十台client的操作,CPU使用率,内存,硬盘等信息,当CPU,内存使用率过高时,发出通知到该client.甚至操作client的执行动作,都可用jmx做到。今天将从简单入手结合jdk的Annotation来实践Spring对jmx的支持
以前jmx的应用需要编写很长的代码来实现,现在你只需完成以上配置就可以实现一个简单的jmx server的程序,jmx server的实现有很多,通常情况下,jmx会需要一个容器例如jboss,现在的方法是将程序本身作为server,这个方式最经典的例子就是个大apserver,我的第一次jmx体验就是在看jboss源码时发起的。实现方式不同会用到不同的协议,这里我们需要jmxremote.jar,你可在spring的lib中找到。
现在来看下我们的mbean
我们可以到类中定义了几个方法,monitor server可以通过clientStatus了解到client的状态,publicMessage是用来主动的发送消息到monitor server,所有不需要想外界暴露。monitor server可以通过获得信息中的ObjectName和Ip来连接到client操作mbean.
mbean在jdk的标准实现是需要实现一个以MBean结尾的interface的,其中定义向外界暴露的方法和属性现在之需要在类前定义@ManagedResource,在属性方法前分别用@ManagedOperation或者@ManagedAttribute修饰就可以了,Annotation实在是太方便了。未来将会有更多的应用。
该测试了
现在我们只需要让Spring加载上面那段bean的定义就好了。jmx mbean server的启动是不会阻塞主线程的,所以需要保持主线程活着,不然加载完main方法就结束了,mbean server也挂了。
jdk里有个强大的monitor server那就是jconsole,不过一次只有一个连接大家可以用jconsole来连接到mbean,调用方法或属性察看结果。
spring jmx很有多有用的功能本人正在挖掘,过段时间再放出一些心得,欢迎有兴趣的一起讨论。
posted on 2007-07-24 17:02 马甲丁 阅读(204) 评论(0) 编辑 收藏
Powered by: BlogJava Copyright © 马甲丁