四、Spring2.x集成MX4J

1、簡介java

      Spring的JMX支持提供了一些特性,讓你能透明地將Spring應用程序集成到JMX基礎實施中去。web

確切地說,Spring的JMX支持提供了四種核心特性:spring

  • 將任意Spring Bean自動註冊爲JMX MBean
  • 靈活操縱Bean管理接口的機制
  • 經過遠程JSR-160鏈接器對MBean的聲明式暴露
  • 對本地和遠程MBean資源的簡單代理

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鏈接器來構建服務器端和客戶端的鏈接。

相關文章
相關標籤/搜索