java之JMX
2016-02-11 12:37
471 查看
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修改变量:
修改变量值:
执行修改:
看看我们运行的程序输出:
是不是修改后的属性生效了。
相关文章推荐
- Java中native关键字
- javaWeb笔记(五) common-dbutils.jar 的用法
- Java—设计模式(单例模式)
- 【JAVA】6、数据类型的转换
- JAVA键盘事件监听(1)
- The Java™ Tutorials — Concurrency :The SimpleThreads Example SimpleThreads案例
- The Java™ Tutorials — Concurrency :Joins 插入
- java语言一维数组,对象数组
- 在页面切换时使用RxJava持续更新控件状态
- The Java™ Tutorials — Concurrency :Interrupts 中断
- java基础06面向对象
- 【JAVA】5、Java数据类型的划分及8种基本数据类型
- java基础05数组中的常见操作函数
- The Java™ Tutorials — Concurrency :Pausing Execution with Sleep 利用Sleep暂停线程执行
- 泡泡堂 Java版
- Eclipse或Myeclipse中搭建KindEditor环境并测试
- java基础数组
- java基础函数
- java 基础总结 -- enum 枚举与接口、泛型、集合的使用
- Java中使用Cookie记录用户访问次数