• 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改动变量:


    改动变量值:






    运行改动:


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

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



  • 相关阅读:
    Flutter实战(四)---LoadingDialog
    多重if结构
    Java类型转换
    Eclipse安装中文简体语言包
    flutter 上传图片 image_picker 的使用
    【Dart学习】--Dart之数字(num)相关方法总结
    Flutter TextField详解
    003——angular 组件 以及组件里面的模板
    001——Typescript 介绍 、Typescript 安 装、Typescript 开发工具
    002——Angular 目录结构分析、app.module.ts 详解、以及 Angular 中创建组件、组件 详解、 绑定数据
  • 原文地址:https://www.cnblogs.com/cxchanpin/p/7010772.html
Copyright © 2020-2023  润新知