http://baike.baidu.com/link?url=6QzGGEqphTmpft3ll5mXmDNVRdvLRZhkvGaqAWyO6EliwrHeIwt5bdMd188iMlzylxoxr7gRbtIWn2NQODBLZa
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); } }