`
longgangbai
  • 浏览: 7245577 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

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"?>
<beans
	xmlns="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" class="com.easyway.jboss.jmx.spring.service.JMXMetaMBeanManager"/>
 
 
<!-- 创建一个MBeanServer对象,
  
 -->
<bean id="mbeanServer" class="org.springframework.jmx.support.MBeanServerFactoryBean">
</bean>

<bean id="jmxAttributeSource" class="org.springframework.jmx.export.metadata.AttributesJmxAttributeSource">
    <property name="attributes">
       <bean class="org.springframework.metadata.commons.CommonsAttributes"></bean>
    </property>
</bean>



<bean id="assembler"  class="org.springframework.jmx.export.assembler.MetadataMBeanInfoAssembler">
   <property name="attributeSource">
     <ref local="jmxAttributeSource"/>
   </property>
</bean>

<!--一个由 MBeanServerFactoryBean 创建的 MBeanServer 实例,它通过属性server提供给了 MBeanExporter。 
当你提供了你自己的 MBeanServer 实例后,MBeanExporter 将使用该实例,且不再查找一个运行中的 MBeanServer。
  设置相关的Bean的暴露为JMX
   关系最大的是 exporter Bean。beans 属性使得 MBeanExporter 知道要将哪个Bean输出到JMX的 MBeanServer 上去。 
   缺省配置中,beans 里的 Map 中的条目的key被用作相应条目值所引用的Bean的 ObjectName。
  -->
<bean id="exporter" class="org.springframework.jmx.export.MBeanExporter">
      <property name="assembler">
          <ref local="assembler"/>
      </property>
     <property name="beans">
       <map>
          <entry key="bean:name=monitorMetaMBeanManager" value-ref="monitorMetaMBeanManager">
          </entry>
       </map>
    </property>
     <property name="server" ref="mbeanServer"/>
</bean>

</beans>

 

分享到:
评论

相关推荐

    spring-async-jmx-example:此示例演示了在Spring和JMX控制台中使用@Async批注来显示线程使用情况

    Spring Async / JMX控制台示例此示例说明: @Async注释在Spring中的用法JMX控制台显示应用程序的当前线程使用情况@Async注释配置AsyncController-AsyncController中的getAsyncResults进行完全并行的调用,并在不同的...

    springMongodb参考文档中文版

    1.了解Spring 2.了解NoSQL和文档数据库 3.要求 4.其他帮助资源 4.1。支持 4.1.1。社区论坛 4.1.2。专业支持 4.2。发展之后 5.新&值得注意的 5.1。Spring Data MongoDB 2.1中的新特性 5.2。Spring Data MongoDB 2.0...

    Spring in Action(第2版)中文版

    10.4使用基于消息的rpc 10.4.1引入lingo 10.4.2输出服务 10.4.3代理jms 10.5小结 第11章spring和ejb 11.1在spring中置入ejb 11.1.1代理会话bean(ejb2.x) 11.1.2将ejb置入springbean 11.2开发spring驱动的...

    Spring in Action(第二版 中文高清版).part2

    10.4 使用基于消息的RPC 10.4.1 引入Lingo 10.4.2 输出服务 10.4.3 代理JMS 10.5 小结 第11章 Spring和EJB 11.1 在Spring中置入EJB 11.1.1 代理会话Bean(EJB 2.x) 11.1.2 将EJB置入Spring Bean 11.2 开发...

    Spring in Action(第二版 中文高清版).part1

    10.4 使用基于消息的RPC 10.4.1 引入Lingo 10.4.2 输出服务 10.4.3 代理JMS 10.5 小结 第11章 Spring和EJB 11.1 在Spring中置入EJB 11.1.1 代理会话Bean(EJB 2.x) 11.1.2 将EJB置入Spring Bean 11.2 开发...

    Spring-Boot-Reference.pdf

    •Spring Boot CLI: 使用CLI •核心特性: SpringApplication |外部配置|概要|日志 •Web应用:MVC |嵌入式容器 •处理数据:SQL | NO-SQL •消息传递:概述| JMS •测试:概述|引导应用| Utils •扩展:自动配置| @...

    (2.0版本)自己写的struts2+hibernate+spring实例

    common.jar jboss-jmx.jar jboss-system.jar jacc-1_0-fr.jar jgroups-2.2.8.jar oscache-2.1.jar proxool-0.8.3.jar swarmcache-1.0rc2.jar classes12.jar spring.jar ...

    JAVA上百实例源码以及开源项目源代码

    2个目标文件,FTP的目标是:(1)提高文件的共享性(计算机程序和/或数据),(2)鼓励间接地(通过程序)使用远程计算机,(3)保护用户因主机之间的文件存储系统导致的变化,(4)为了可靠和高效地传输,虽然用户...

    xmljava系统源码-mountain:山

    在idea中执行package打包时,打包2次,是因为pom.xml文件中下边插件引起的,把这个注释掉 &lt;groupId&gt;org.springframework.boot &lt;artifactId&gt;spring-boot-maven-plugin 一个tomcat中部署多个类似项目,将报错 Unable...

    JAVA上百实例源码以及开源项目

    2个目标文件,FTP的目标是:(1)提高文件的共享性(计算机程序和/或数据),(2)鼓励间接地(通过程序)使用远程计算机,(3)保护用户因主机之间的文件存储系统导致的变化,(4)为了可靠和高效地传输,虽然用户...

    jembedded-开源

    面向服务的容器(SOC)专注于使用注释创建和管理服务。 使用JEE,JAVA和Ruby实现轻量级SOA。 包括20多种服务(ESB(M子),jBPM,Jetty,JMS,GWT,DB,Rules,JMX,Spring支持。)

Global site tag (gtag.js) - Google Analytics