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  
这个怎么运行啊