`
longgangbai
  • 浏览: 7325902 次
  • 性别: 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源码注释中文

    Spring 源码注释中文版的提供,使得开发者能够更加深入地理解 Spring 的工作原理,无需经过复杂的编译过程,可以直接阅读源码注释来学习。 Spring 框架主要由以下几个关键模块组成: 1. **Core Container(核心...

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

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

    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 API英文版

    在阅读Spring API文档时,开发者可以按照类和接口的层次结构来了解每个组件的功能,查阅方法签名以理解其行为,以及查看注释获取详细的使用指导。对于初学者,建议从核心模块开始学习,逐步深入到其他模块,结合实际...

    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(第二版 中文高清版).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 •扩展:自动配置| @...

    spring 源码

    4. **学习源码注释**:Spring的源码注释非常丰富,可以从中获取大量信息。 5. **查阅文档**:Spring的官方文档是理解源码的重要辅助资源,它提供了详细的API说明和使用示例。 6. **参与社区**:加入Spring社区,...

    (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 ...

    xdoclet-plugins-1.0.3.tar.gz

    《XDoclet插件集1.0.3详解》 在软件开发领域,尤其是在Java世界里,自动化工具...然而,随着Java框架的发展,例如Spring Boot等现代框架的出现,XDoclet的使用逐渐减少,但其设计理念和自动化思想仍然值得学习和借鉴。

    SpringBoot多数据源项目

    开发者通过学习这个项目,可以掌握如何在实际项目中灵活配置和管理多个数据库,以及如何利用AOP进行动态数据源切换,这对于大型分布式系统的开发尤其有价值。同时,理解项目的代码结构和功能备注,将有助于提高解决...

    pring4新特性概述共2页.pdf.zip

    鼓励使用Java配置,但XML配置也得到了改进,比如支持注释驱动的配置。 14. **JMX增强**: 提供了更好的JMX支持,可以更轻松地管理和监控Spring应用。 15. **模块化**: Spring 4将框架分解为更小的模块,使得...

    xdoclet-1.2.1.jar

    XDoclet的名字源于“XML Documentlet”,它是一种基于Javadoc的扩展,可以读取Java源代码中特定的注释,并根据这些注释生成相应的XML文档或代码。这个过程使得开发者无需手动编写大量的配置文件,从而更专注于业务...

    xdoclet-1.2.3-sources.jar

    然而,随着Java EE规范的发展,一些现代框架如Spring和Java Persistence API (JPA) 提供了更简便的注解方式,使得XDoclet的地位受到了挑战。尽管如此,XDoclet依然是理解和学习元数据驱动开发的一个重要参考。 总结...

    xdoclet应用

    xdoclet是一款基于JavaDoc注解的代码生成工具,它通过解析Java源代码中的特定注释(即JavaDoc标签),自动生成各种元数据文件,如EJB组件接口、Hibernate映射文件、JMX管理接口等。这种自动化的方式避免了手动编写...

    XDoclet Api

    5. **其他框架支持**:除了上述框架,XDoclet还可以与许多其他的Java框架集成,如Spring、JMX等,帮助生成对应的配置文件。 **XDoclet标签** XDoclet的标签语法是在Javadoc注释中嵌入的,例如`@ejb.bean`、`@...

    xdoclet-plugins-dist-1.0.4

    XDoclet这个名字来源于“XML Doclet”,意味着它是一种基于JavaDoc的插件,能够从Java源代码中的Javadoc注释自动生成各种元数据文件,如部署描述符(deployment descriptors)、持久化映射文件(persistence ...

    red5 与 tomcat项目集成

    在这个例子中,JMX 服务器的相关配置(`jmxFactory` 和 `jmxAgent`)被注释掉,因为它们可能引起冲突或者不必要的远程连接暴露。 8. **部署与测试**:完成上述步骤后,将项目部署到 Tomcat 并启动。在实际操作中,...

Global site tag (gtag.js) - Google Analytics