1、简介java
Spring的JMX支持提供了一些特性,让你能透明地将Spring应用程序集成到JMX基础实施中去。web
确切地说,Spring的JMX支持提供了四种核心特性:spring
2、准备工做浏览器
一、 引入Spring2.5所需开发包服务器
二、 引入mx4j-tools.jar包app
三、 开发环境MyEclipse8.0框架
3、代码实例ui
3.1 applicationcontext.xml代码this
<?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"> <!-- MBeanExporter --> <bean id="exporter" class="org.springframework.jmx.export.MBeanExporter" depends-on="mbeanServer"> <property name="beans"> <map> <entry key="LuisFigo:name=config" value-ref="config" /> <entry key="MX4J:name=HttpAdaptor" value-ref="httpAdaptor" /> </map> </property> <property name="server" ref="mbeanServer" /> <property name="assembler"> <bean id="assembler" class="org.springframework.jmx.export.assembler.MetadataMBeanInfoAssembler"> <property name="attributeSource"> <bean id="attributeSource" class="org.springframework.jmx.export.annotation.AnnotationJmxAttributeSource" /> </property> </bean> </property> </bean> <!-- MBeanServerFactoryBean --> <bean id="mbeanServer" class="org.springframework.jmx.support.MBeanServerFactoryBean"> </bean> <!-- HttpAdaptor & XSLTProcessor --> <bean id="httpAdaptor" class="mx4j.tools.adaptor.http.HttpAdaptor"> <property name="processor"> <!-- XSLTProcessor --> <bean id="xsltProcessor" class="mx4j.tools.adaptor.http.XSLTProcessor" /> </property> <property name="port" value="8000" /> </bean> <bean id="config" class="com.muyu.jmx.Config"> </bean> </beans>
Spring的JMX框架的核心类是MBeanExporter,这个类负责获取Spring Bean,而后将其注册到一个JMX MBeanServer上,要将一个Bean中的属性和方法暴露成为一个JMX MBean中的属性和操做,你只要在配置文件中简单的配置MBeanExporter一个实例,并根据上面的配置文件中的配置方法将bean传入便可。 Assembler用于管理bean暴露的接口,Spring JMX提供了一套全面的以及可扩展的机制来控制bean的管理接口。咱们这个例子使用MetadataMBeanInfoAssembler,可以用源码级元数据给你的Bean定义管理接口。AnnotationJmxAttributeSource说明咱们用注解的方式来管理接口。代理
3.2 config代码
package com.muyu.jmx; import org.springframework.jmx.export.annotation.ManagedAttribute; import org.springframework.jmx.export.annotation.ManagedOperation; import org.springframework.jmx.export.annotation.ManagedOperationParameter; import org.springframework.jmx.export.annotation.ManagedOperationParameters; import org.springframework.jmx.export.annotation.ManagedResource; @ManagedResource(description = "config") public class Config { private String configLocation; @ManagedAttribute(description = "configLocation 对应的值") public String getConfigLocation() { return configLocation; } @ManagedOperation(description = "控制台输出configLocation信息") public void printConfigLocation() { System.out.println(configLocation); } @ManagedOperation(description = "控制台输出i_ConfigLocation信息") @ManagedOperationParameters(@ManagedOperationParameter(name="i_ConfigLocation", description="第一个参数")) public void printConfigLocation(String i_ConfigLocation) { System.out.println(i_ConfigLocation); } @ManagedAttribute(description = "赋值给configLocation") public void setConfigLocation(String i_ConfigLocation) { this.configLocation = i_ConfigLocation; } }
3.3 jmxtest代码
package com.muyu.jmx; import java.io.IOException; import javax.management.MalformedObjectNameException; import mx4j.tools.adaptor.http.HttpAdaptor; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; public class JMXTest { public static void main(String[] args) throws IOException, MalformedObjectNameException, Exception { ApplicationContext ctx = new ClassPathXmlApplicationContext(new String[] { "applicationContext.xml"}); HttpAdaptor httpAdaptor = (HttpAdaptor) ctx.getBean("httpAdaptor"); httpAdaptor.start(); } }
说明:
applicationContext.xml配置文件中已经设置httpAdaptor端口号为8000,运行JMXTest后,经过web浏览器登陆http://localhost:8000 图1所示,点击LuisFigo:name=config进入图2页面,就能够访问或者经过暴露的接口操做config了。
4、总结
本节只是介绍了Spring怎样集成MX4J来管理注册的bean(固然这里的bean只是普通的Spring bean,Spring框架采用dynamicMBean来实现JMX),Spring还能够经过JSR-160链接器来构建服务器端和客户端的链接。