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


执行如图:

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

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


改动变量值:






运行改动:

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">


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

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



java之JMX的更多相关文章

  1. 杂项-Java:JMX

    ylbtech-杂项-Java:JMX 1.返回顶部 1. JMX(Java Management Extensions,即Java管理扩展)是一个为应用程序.设备.系统等植入管理功能的框架.JMX可 ...

  2. Java之JMX 详解

    详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcyt194 一.JMX简介 JMX是一种JAVA的正式规范,它主要目的是让程序有被 ...

  3. [转]Java之JMX 详解

    一.JMX简介 JMX是一种JAVA的正式规范,它主要目的是让程序有被管理的功能,那么怎么理解所谓的“被管理”呢?试想你开发了一个软件(如WEB网站),它是在24小时不间断运行的,那么你可能会想要“监 ...

  4. 【JAVA】JMX简单使用方法

    [BEAN] 配置   <!-- JMX 对应的接口服务--> <bean id="emailInterfaceServer" class="com.s ...

  5. java 通过jmx获取active mq队列消息

    一.修改active mq配置文件 修改\conf\activemq.xml,带下划线部分 <!-- Licensed to the Apache Software Foundation (AS ...

  6. Zabbix 通过 JMX 监控 java 进程

    参考: [ JMX monitoring ] [ Zabbix Java gateway ] [ JMX Monitoring (Java Gateway) not Working ] [ Monit ...

  7. 使用JMX Exporter监控Rainbond上的Java应用

    场景 Prometheus 社区开发了 JMX Exporter 用于导出 JVM 的监控指标,以便使用 Prometheus 来采集监控数据.当您的 Java 应用部署在Rainbond上后 可通过 ...

  8. JMX示例

    HelloJMXMBean.java package jmx; /** * Created by george on 14-8-21. */ public interface HelloJMXMBea ...

  9. JVM Input Arguments Lookup (JMX)(转)

    JVM Input Arguments Lookup (JMX) Maps JVM input arguments -- but not main arguments -- using JMX to ...

随机推荐

  1. HTML5 内联 SVG

    SVG 指可伸缩矢量图形 (Scalable Vector Graphics) SVG 用于定义用于网络的基于矢量的图形 SVG 使用 XML 格式定义图形 SVG 图像在放大或改变尺寸的情况下其图形 ...

  2. BZOJ 1069 求凸包+旋转卡壳

    思路: 求凸包: 先按照x轴排个序 从左往右扫一遍 找到上凸壳 (用叉积) 再从右往左扫一遍 求下凸壳 搞个旋转卡壳就好啦~ 嗯 我手懒 用的C++ Complex库 巨好用! //By Sirius ...

  3. AD域导入导出命令

    AD域 批量组织机构.用户导入导出 参考网站 https://technet.microsoft.com/zh-cn/library/cc753447(v=ws.11).aspx 导入所有命令 均cm ...

  4. Mojo C++ Platform API

    Mojo C++ Platform API This document is a subset of the Mojo documentation. Contents Overview Platfor ...

  5. php八大设计模式之简介篇

    设计模式的在面向对象中的重要性?       更深入的理解面向对象的思想,有利于开发出扩展性强的程序.在 PHP 面向对象中有一个 "开闭原则" :"软件实体应当对扩展开 ...

  6. zabbix2.4.5安装zatree插件

    一.关于zatree zatree 是来自国内58公司开发的监控软件zabbix的一个插件,主要功能是提供host group的树形展示和在item里指定关键字查询及数据排序. 项目地址:https: ...

  7. vue中使用console.log无效

    webpack开发环境下,在vue中使用console.log无效,一直以为webpack出了问题. 使用window.console.log()就能够顺利在浏览器控制台输出了. 以及 在axios请 ...

  8. Python3 利用POP3与smtplib进行计算机远程控制

    初习,代码有不足之处,欢迎指出. 跟大家分享的是,通过发送端发送cmd命令,从而对接收端进行cmd命令的控制. #接收端代码 from poplib import POP3 import time,o ...

  9. iptables指南

    在了解iptables之前我们先了解一下 防火墙 的概念防火墙是由Check Point创立者Gil Shwed于1993年发明并引入国际互联网,防火墙也是一种位于内部网络与外部网络之间的网络安全系统 ...

  10. Java基础学习总结(13)——流IO

    一.JAVA流式输入/输出原理 流是用来读写数据的,java有一个类叫File,它封装的是文件的文件名,只是内存里面的一个对象,真正的文件是在硬盘上的一块空间,在这个文件里面存放着各种各样的数据,我们 ...