tomcat 7 源码分析-6 server初始化中的JMX(DynamicMBean)续

finalcola 2011-03-11

tomcat 7 源码分析-6 server初始化中的JMX(DynamicMBean)续

先说JMX,The JMX technology provides a simple, standard way of managing resources such as applications, devices, and services.

JMX是为了管理资源产生的,这个资源包括应用、设备和服务等。取个例子,如果你写了一个应用,初始化了20个的数据连接数,当你的应用还在跑的时候,发觉这个连接数少了,你要增加这个参数。JMX提供不需要停机,动态的管理连接数的方法。

先从简单的Standard MBeans看起。

通常我们先定义interface

第一步:MBean Interface

package
 com.example;   



   


public
 
interface
 ConnectionNumberMBean {   



    public
 
int
 getConnectionNumber();   



    public
 
void
 setConnectionNumber(
int
 num);   



}  
package com.example; 
 
public interface ConnectionNumberMBean { 
    public int getConnectionNumber(); 
    public void setConnectionNumber(int num); 
}

 第二步:实现接口

package
 com.example;   



import
 javax.management.*;  



public
 
class
 ConnectionNumber 
extends
 NotificationBroadcasterSupport 
implements
 ConnectionNumberMBean {   



   


    public
 
int
 getConnectionNumber() {   



    return
 
this
.conNum ;   



    }   


   


    public
 
synchronized
 
void
 setConnectionNumber(
int
 con_Num ) {  



  


    this
.conNum = con_Num ;   



   


    System.out.println("Connection number now "
 + 
this
.conNum );   



    }   


    private
 
int
 conNum = DEFAULT_CON_Num;  



    private
 
static
 
final
 
int
 DEFAULT_CON_Num= 
20
;   



}  
package com.example; 
import javax.management.*;
public class ConnectionNumber extends NotificationBroadcasterSupport implements ConnectionNumberMBean { 
 
    public int getConnectionNumber() { 
	return this.conNum ; 
    } 
 
    public synchronized void setConnectionNumber(int con_Num ) {

	this.conNum = con_Num ; 
 
	System.out.println("Connection number now " + this.conNum ); 
    } 
    private int conNum = DEFAULT_CON_Num;
    private static final int DEFAULT_CON_Num= 20; 
}

 第三步:创建a JMX Ageng来管理资源

package
 com.example;  



  


import
 java.lang.management.ManagementFactory;  



import
 javax.management.MBeanServer;  



import
 javax.management.ObjectName;  



  


public
 
class
 Main {  



    /* For simplicity, we declare "throws Exception".
 


       Real programs will usually want finer-grained exception handling. */
  



    public
 
static
 
void
 main(String[] args) 
throws
 Exception {  



        // Get the Platform MBean Server
  



        MBeanServer mbs = ManagementFactory.getPlatformMBeanServer();  


  


    // Construct the ObjectName for the Hello MBean we will register
  



    ObjectName mbeanName = new
 ObjectName(
"com.example:type=ConnectionNumber"
);  



  


    // Create the Hello World MBean
  



    ConnectionNumber  mbean = new
 ConnectionNumber();  



  


    // Register the Hello World MBean
  



    mbs.registerMBean(mbean, mbeanName);  


  


        // Wait forever
  



        System.out.println("Waiting for incoming requests..."
);  



        Thread.sleep(Long.MAX_VALUE);  


    }  


}  
package com.example;

import java.lang.management.ManagementFactory;
import javax.management.MBeanServer;
import javax.management.ObjectName;

public class Main {
    /* For simplicity, we declare "throws Exception".
       Real programs will usually want finer-grained exception handling. */
    public static void main(String[] args) throws Exception {
        // Get the Platform MBean Server
        MBeanServer mbs = ManagementFactory.getPlatformMBeanServer();

	// Construct the ObjectName for the Hello MBean we will register
	ObjectName mbeanName = new ObjectName("com.example:type=ConnectionNumber");

	// Create the Hello World MBean
	ConnectionNumber  mbean = new ConnectionNumber();

	// Register the Hello World MBean
	mbs.registerMBean(mbean, mbeanName);

        // Wait forever
        System.out.println("Waiting for incoming requests...");
        Thread.sleep(Long.MAX_VALUE);
    }
}

 编译生产Class文件后,运行它。

打开windows控制台,运行jconsole命令,打开java控制台,如下图。

tomcat 7 源码分析-6 server初始化中的JMX(DynamicMBean)续

可以看见我们注册的mian已经在列表上,可以连接

看下图,点MBean

tomcat 7 源码分析-6 server初始化中的JMX(DynamicMBean)续

tomcat 7 源码分析-6 server初始化中的JMX(DynamicMBean)续

修改属性值,结果如下

tomcat 7 源码分析-6 server初始化中的JMX(DynamicMBean)续

相关推荐