JMX(Java Management Extensions,即Java管理扩展)

来源:互联网 发布:linux远程连接工具 编辑:程序博客网 时间:2024/05/21 06:36

JMXJava Management Extensions,即Java管理扩展)

 

Jmx可以将按指定规则创建的javabean保存到java程序进程中并且可以通过jconsole动态修改bean的值当程序中需要配置某些数据时 如果将配置信息写死在代码中需要修改代码后重启写死在配置文件中修改配置文件后需要重启如果将数据从配置中读出并且写入jmx可以直接修改内存中的配置值

 

实现举例首先必须创建一个接口接口必须以Mbean结尾

package com.test;

 

public interface SysConfigueMBean{

    public String getUrl();

    public void setUrl(String url);

    public String getClassDriver() ;

    public void setClassDriver(String classDriver);

    public String getUname() ;

    public void setUname(String uname);

    public String getPwd() ;

    public void setPwd(String pwd);

}

 

 

创建实现类

package com.test;

 

class SysConfigue{

    private Stringurl="jdbc:oracle:thin:@192.168.100.XXX:1521:plm";

    private StringclassDriver="oracle.jdbc.driver.OracleDriver";

    private Stringuname="XXX";

    private Stringpwd="xxxxx";

    public String getUrl() {

       returnurl;

    }

    public void setUrl(String url) {

       this.url = url;

    }

    public String getClassDriver() {

       returnclassDriver;

    }

    public void setClassDriver(String classDriver) {

       this.classDriver = classDriver;

    }

    public String getUname() {

       returnuname;

    }

    public void setUname(String uname) {

       this.uname = uname;

    }

    public String getPwd() {

       returnpwd;

    }

    public void setPwd(String pwd) {

       this.pwd = pwd;

    }

}

 

 

创建一个主类

 

package com.test;

import java.lang.management.ManagementFactory;

 

import javax.management.MBeanServer;

import javax.management.MBeanServerFactory;

import javax.management.ObjectName;

 

 

public class JMXTest {

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

       MBeanServer mBeanServer = null;

        if (MBeanServerFactory.findMBeanServer(null).size() > 0) {

            mBeanServer =

                (MBeanServer)MBeanServerFactory.findMBeanServer(null).get(0);

        } else {

            mBeanServer = ManagementFactory.getPlatformMBeanServer();

        }

        ObjectName name = new ObjectName("11:as=1");//中间必须有个:后面的必须是个键值对 类如abc:test=test

        SysConfigue sc=new SysConfigue();

        sc.setClassDriver("abc");

        mBeanServer.registerMBean(sc, name);

        Thread.sleep(Long.MAX_VALUE); 

    }

}

 

找到jdk根目录\bin\jconsole.exe  打开后 选中本地进程中的 类名称是你名称的那个点击连接 打开Mbean试图 找到对应ObjectName中的参数类如 是abc:test=test1找到abc目录下的test1 属性 就可以看到配置的信息

 

获取对应的值 

ObjectName name = new ObjectName("11:as=1");  
Object obj=mBeanServer.getAttribute(name, "Url");
System.out.println(obj);

 

0 0
原创粉丝点击