java的jmx_java之JMX

java之JMX

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

代码实例:

与创建一个普通的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

fa9f53faebfec0da098042a2434067d0.png

执行如图:

322ff2bbc0b620b25e3230300c3d1bfe.png

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

a070d595d79fcc3655edf0e28c140f9d.png

改动变量值:

91ed0d8f56afd431ef7bc17645296b27.png

3bc59aecc22e4fc11b33b24907f48781.png

运行改动:

c1f32b70e89b494095f9180d97848a08.png

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

f76daba223518de4606ce6ec56af60f8.png

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值