Spring JMX的小结学习(一)基于标准接口的JMX
Spring JMX的总结学习(一)基于标准接口的JMX
在Spring中采用JMX标准形式的,开发相关的Spring JMX实例的方法的学习:
创建JMX MBean的相关的MBean类的接口
package com.easyway.jboss.jmx.spring.service; public interface IJmxTestBean { public int getAge(); public void setAge(int age); public void setName(String name); public String getName(); public int add(int x, int y); public void dontExposeMe(); }
创建JMX MBean的相关的类:
package com.easyway.jboss.jmx.spring.service; public class JmxTestBean implements IJmxTestBean { private String name; private int age; private boolean isSuperman; public int getAge() { return age; } public void setAge(int age) { this.age = age; } public void setName(String name) { this.name = name; } public String getName() { return name; } public int add(int x, int y) { return x + y; } public void dontExposeMe() { throw new RuntimeException(); } }
配置如下:
applicationContext-jmx.xml
<?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"> <!-- 创建相关的Bean对象并设置参数 --> <bean id="testBean" class="com.easyway.jboss.jmx.spring.service.JmxTestBean"> <property name="name"> <value>TEST</value> </property> <property name="age"> <value>100</value> </property> </bean> <!-- 创建一个MBeanServer对象, --> <bean id="mbeanServer" class="org.springframework.jmx.support.MBeanServerFactoryBean"> <property name="locateExistingServerIfPossible"> <value>true</value> </property> <!-- <property name="agentId" value="springJMXAgentId"></property> --> </bean> <!-- 一个由 MBeanServerFactoryBean 创建的 MBeanServer 实例,它通过属性server提供给了 MBeanExporter。 当你提供了你自己的 MBeanServer 实例后,MBeanExporter 将使用该实例,且不再查找一个运行中的 MBeanServer。 设置相关的Bean的暴露为JMX 关系最大的是 exporter Bean。beans 属性使得 MBeanExporter 知道要将哪个Bean输出到JMX的 MBeanServer 上去。 缺省配置中,beans 里的 Map 中的条目的key被用作相应条目值所引用的Bean的 ObjectName。 配置MbeanExporter类并传入需要导出的MBean --> <bean id="exporter" class="org.springframework.jmx.export.MBeanExporter"> <property name="beans"> <map> <!-- 最重要的是定义exporter bean. beans属性被用来通知MbeanExporter你有那些beans将被发布到JMX MbeanServer. beans属性是Map类型,因而你能使用<map>和<entry>标记来配置要发布的beans. 在默认的配置中,Map中条目的键值被用作该条目中value所指bean的ObjectName 用这个配置,testBean在ObjectName bean:name=testBean1下被发布为JMX Mbean。 所有的公共属性被公布为参数而所有公共方法(除去在Object中定义的那些)被公布为操作。 --> <entry key="bean:name=testBean1" value-ref="testBean"> </entry> </map> </property> <property name="server" ref="mbeanServer"/> </bean> <!-- 注意当使用一个RMI-based连接器时,你需要启动lookup服务(tnameserv或rmiregistry)用来完成名称注册。如果你通过RMI使用Spring发布远程服务,Spring还要构造一个RMI注册项。如果没有,你可以容易地使用下面的配置项启动一个注册: --> <bean id="registry" class="org.springframework.remoting.rmi.RmiRegistryFactoryBean"> <property name="port"> <value>9875</value> </property> </bean> <!-- 建立服务器端的连接 Spring JMX使用下面的配置创建、启动和发布一个JSR-160 JMXConnectorServer --> <bean id="serverConnector" class="org.springframework.jmx.support.ConnectorServerFactoryBean"> <property name="objectName"> <value>connector:name=rmi</value> </property> <property name="serviceUrl"> <value>service:jmx:rmi://localhost/jndi/rmi://localhost:9875/myconnector</value> </property> </bean> </beans>
1 楼
tomfish88
2011-03-18
这个怎么运行啊