博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java之JMX
阅读量:6831 次
发布时间:2019-06-26

本文共 3116 字,大约阅读时间需要 10 分钟。

java之JMX 

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

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改动变量:
改动变量值:
运行改动:
看看我们执行的程序输出:
是不是改动后的属性生效了。
你可能感兴趣的文章
C#中程序的退出
查看>>
MDT 2013 Update 1 Preview 部署 Windows 10之批量部署实战
查看>>
数据建模在性能测试中的理解
查看>>
离开网易的转型之路1:选择测试之路-路上的迷茫
查看>>
RHEL6入门系列之三十一,管理计划任务
查看>>
CentOS 用Strongswan搭建IPSec ***
查看>>
CentOS7 安装向导
查看>>
常见病毒ACL
查看>>
Visual Studio 2015 速递(4)——高级特性之移动开发
查看>>
第三章 Shell表达式与运算符
查看>>
葡萄城报表模板库更新:新增6个行业、50张经典报表模板
查看>>
在制作WORD小报时添加艺术横线或者艺术竖线
查看>>
值得一看:一个故事说清楚锐捷网络COffice的作用和优势
查看>>
Powershell管理系列(二十六)PowerShell操作之批量导出&导入邮箱
查看>>
K8S网络NAT问题分析与处理
查看>>
XStream处理重复的或循环引用
查看>>
对某机构为“转移内部矛盾”而嫁祸于我们的事件之真相大起底
查看>>
Exchange管理控制台无法安装,要求重新启动
查看>>
【案例分享】电力设备生产数据的多层分组统计报表实现
查看>>
Windows 7下安装Cygwin亲历烦恼记录
查看>>