首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

Spring JMX的学习小结(三) 基于注释的JMX的使用

2012-09-08 
Spring JMX的学习总结(三) 基于注释的JMX的使用??? 具体实现JMX的注释的类:?package com.easyway.jboss.jm

Spring JMX的学习总结(三) 基于注释的JMX的使用

??? 具体实现JMX的注释的类:

?

package com.easyway.jboss.jmx.spring.service;/** * 采用Spring的注释(Metadata)方式实现JMX的开发 * MbeanInfoAssembler接口     在后台,MbeanExporter委派一个org.springframework.jmx.export. assembler.MbeanInfoAssembler    接口的实现来负责为每个bean定义发布出来的管理接口。默认的实现    org.springframework.jmx.export.assembler. SimpleReflectiveMBeanInfoAssembler,    只是简单的定义一个接口发布所有的公共参数和方法,正如你在前面的例子中看到的一样。    Spring为MbeanInfoAssembler接口提供两个额外的实现,允许你通过源码级元数据或任意的接口    来控制管理接口。      *要标示一个bean发布给JMX,你应当用ManagedResource参数来注解这个bean类。 *在使用普通参数元数据方法的场合中,这个类可以在org.springframework.jmx.metadata *包中找到。每个要发布为操作的方法应当用ManagedOperation属性来标示, *每个要发布的参数应当用ManagedAttribute参数来标示。当标示参数时, *你可以省略getter或setter来分别创建一个只写或只读的参数。  * * * 你同样注意到clientId和clientStatus属性都用ManagedAttribute来标示,但是clientStatus属性只标示了getter方法。 * 这将使得这两个属性都作为参数被包含在管理接口中,并且age参数是只读的。  * 最后,你会注意到pause()方法用ManagedOperation参数来标示而publicMessage()方法没有标示。 * 这将使得当使用MetadataMBeanInfoAssembler时,管理接口中只包含一个操作pause()。  *  * @author longgangbai *  * * *@@org.springframework.jmx.export.annotation.ManagedResource(description="my Managed Bean",objectName="spring:bean=test") */public class JMXMetaMBeanManager {private int clientId;/**      * @@org.springframework.jmx.export.metadata.ManagedAttribute      * (description="The clientId Attribute", currencyTimeLimit=20,      * defaultValue="0001")      */ public int getClientId() {return clientId;}/**      * @@org.springframework.jmx.export.metadata.ManagedAttribute      * (description="set The clientId Attribute", currencyTimeLimit=20,      * defaultValue="0001", persistPolicy="OnUpdate")      */ public void setClientId(int clientId) {this.clientId = clientId;}private int clientStatus;    /**     * @@org.springframework.jmx.export.annotation.ManagedOperation(description = "pause a single proccess")        */    public void pause(String n) {           System.out.println("pause");       }       /**     * @@org.springframework.jmx.export.annotation.ManagedOperation(description = "shutting down…")        */    public void monitor() {           System.out.println("shutting down…");       }          public void publicMessage() {           System.out.println("public Message to monitor server");       }          /**      * @@org.springframework.jmx.export.metadata.ManagedAttribute      * (description="The clientStatus Attribute", currencyTimeLimit=20,      * defaultValue="bar", persistPolicy="OnUpdate")      */     public int getClientStatus() {           return clientStatus;       }          public void setClientStatus(int clientStatus) {           this.clientStatus = clientStatus;       }   }   

?配置如下:

<?xml version="1.0" encoding="UTF-8"?><beansxmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:p="http://www.springframework.org/schema/p"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">   <!--     利用MetadataMBeanInfoAssembler,你能使用源码级元数据为你的bean定义管理接口。    元数据的读取被封装在org.springframework.jmx.export.metadata. JmxAttributeSource接口。    在该单元外,Spring JMX为这个接口提供两种支持:支持普通参数的    org.springframework.jmx.export.metadata. AttributesJmxAttributeSource    和支持JDK5.0注解的org.springframework. jmx.export.annotation.AnnotationJmxAttributeSource。    MetadataMBeanInfoAssembler必须要配置一个JmxAttributeSource的实现才能正确运行。  --> <!-- 创建相关的Bean对象并设置参数 --> <bean id="monitorMetaMBeanManager"  value-ref="monitorMetaMBeanManager">          </entry>       </map>    </property>     <property name="server" ref="mbeanServer"/></bean></beans>

?

热点排行