zoukankan      html  css  js  c++  java
  • java之JMX

    java之JMX 

    有关JMX的定义和架构就不具体解释了。见百度百科:


    http://baike.baidu.com/link?

    url=6QzGGEqphTmpft3ll5mXmDNVRdvLRZhkvGaqAWyO6EliwrHeIwt5bdMd188iMlzylxoxr7gRbtIWn2NQODBLZa


    代码实例:

    与创建一个普通的bean没什么差别:
    package com.doctor.java.jmx;
    
    /**
     * @author sdcuike
     *
     * @time 2016年2月9日 下午9:47:04
     * 
     * @see http://www.journaldev.com/1352/what-is-jmx-mbean-jconsole-tutorial
     *      The interface name must end with MBean
     */
    public interface SystemConfigMBean {
        public void setThreadCount(int noOfThreads);
    
        public int getThreadCount();
    
        public void setSchemaName(String schemaName);
    
        public String getSchemaName();
    
        // any method starting with get and set are considered
        // as attributes getter and setter methods, so I am
        // using do* for operation.
        public String doConfig();
    
    }
    



    package com.doctor.java.jmx;
    
    /**
     * @author sdcuike
     *
     * @time 2016年2月9日 下午9:51:53
     */
    public class SystemConfig implements SystemConfigMBean {
    
        private int threadCount;
        private String schemaName;
    
        public SystemConfig(int threadCount, String schemaName) {
            this.threadCount = threadCount;
            this.schemaName = schemaName;
        }
    
        @Override
        public void setThreadCount(int noOfThreads) {
            this.threadCount = noOfThreads;
    
        }
    
        @Override
        public int getThreadCount() {
            return threadCount;
        }
    
        @Override
        public void setSchemaName(String schemaName) {
            this.schemaName = schemaName;
    
        }
    
        @Override
        public String getSchemaName() {
            return schemaName;
        }
    
        @Override
        public String doConfig() {
            return "No of Threads=" + this.threadCount + " and DB Schema Name=" + this.schemaName;
    
        }
    
    }
    

    然后我们创建一个測试样例:
    package com.doctor.java.jmx;
    
    import java.lang.management.ManagementFactory;
    import java.util.concurrent.TimeUnit;
    
    import javax.management.InstanceAlreadyExistsException;
    import javax.management.MBeanRegistrationException;
    import javax.management.MBeanServer;
    import javax.management.MalformedObjectNameException;
    import javax.management.NotCompliantMBeanException;
    import javax.management.ObjectName;
    
    /**
     * @author sdcuike
     *
     * @time 2016年2月9日 下午9:56:27
     */
    public class SystemConfigManagement {
    
        private static final int DEFAULT_NO_THREADS = 10;
        private static final String DEFAULT_SCHEMA = "default";
    
        public static void main(String[] args) throws MalformedObjectNameException, InstanceAlreadyExistsException, MBeanRegistrationException, NotCompliantMBeanException, InterruptedException {
            // Get the MBean server
            MBeanServer mBeanServer = ManagementFactory.getPlatformMBeanServer();
    
            // register the MBean
            SystemConfig systemConfig = new SystemConfig(DEFAULT_NO_THREADS, DEFAULT_SCHEMA);
            ObjectName objectName = new ObjectName("com.doctor.java.jmx:type=SystemConfig");
            mBeanServer.registerMBean(systemConfig, objectName);
    
            do {
                TimeUnit.SECONDS.sleep(3);
                System.out.println("Thread Count=" + systemConfig.getThreadCount() + ":::Schema Name=" + systemConfig.getSchemaName());
            } while (systemConfig.getThreadCount() != 0);
        }
    
    }
    

    执行:

    执行的时候,我们必须启用虚拟机选项-Dcom.sun.management.jmxremote


    执行如图:

    如今我们用java工具jconsole改动变量:


    改动变量值:






    运行改动:


    看看我们执行的程序输出:

    是不是改动后的属性生效了。



  • 相关阅读:
    单例模式的三种写法
    ASP.NET如何下载大文件
    字符串是引用类型
    SQL 事务隔离级别
    Sql Server 锁
    设非主键为聚集索引
    C#如何使用SqlCacheDependency
    简易系统后台架构
    matlab cross 3*1 向量叉乘
    Matlab求齐次方程的解
  • 原文地址:https://www.cnblogs.com/cxchanpin/p/7010772.html
Copyright © 2011-2022 走看看