java之JMX

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修改变量:

修改变量值:

执行修改:

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

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

时间: 2024-10-14 18:50:15

java之JMX的相关文章

Zabbix 通过 JMX 监控 java 进程

参考: [ JMX monitoring ] [ Zabbix Java gateway ] [ JMX Monitoring (Java Gateway) not Working ] 这里会说明通过 JMX 监控 java 进程的配置过程以及需要注意的问题. 本文在 zabbix 已经安装好的基础之上展开. 如果使用 zabbix_proxy , 配置完全一致, 只需要打开zabbix_proxy 对 java app server 有所有端口的访问权限即可. 环境说明 基本环境 OS: Ce

JAVA 基础知识学习笔记 名称解释

Java ee:? IDE: ? itegrity   development environment 集成开发环境 JMS:? java Message Service java   信息服务 JMX? Java Management Extensions,即Java管理扩展 JNDI:(Java Naming and Directory Interface,Java命名和目录接口)是SUN公司 提供的一种标准的Java命名系统接口,JNDI提供统一的客户端 API,通过不同的访问提供者接口J

Java千百问_08JDK详解(003)_java核心框架是什么样的

点击进入_更多_Java千百问 1.jdk基础扩展类库都有什么 了解java核心框架看这里:java核心框架是什么样的 jdk基础类库分为两大部分,基础库.扩展基础库,提供了相当大量的功能,扩展基础库具体如下: I/O工具(I/O) java.io和java.nio包提供了一组非常丰富的api来管理应用程序的I/O(输入/输出).包括文件和设备I/O.对象序列化.缓冲区管理.字符集支持等.此外,API还为服务端提供了包括多路复用.非阻塞I/O.内存映射和文件锁等功能. 了解更多java.io和j

Java千百问_08JDK详解(004)_jdk基础扩展类库都有什么

1.jdk基础扩展类库都有什么 了解java核心框架看这里:java核心框架是什么样的 jdk基础类库分为两大部分,基础库.扩展基础库,提供了相当大量的功能,扩展基础库具体如下: I/O工具(I/O) java.io和java.nio包提供了一组非常丰富的api来管理应用程序的I/O(输入/输出).包括文件和设备I/O.对象序列化.缓冲区管理.字符集支持等.此外,API还为服务端提供了包括多路复用.非阻塞I/O.内存映射和文件锁等功能. 了解更多java.io和java.nio包看这里:[io包

Java 系列文章

[Java 继承.多态] JavaSE:你真的了解继承.重写.可见性吗? [Java 集合] Java Se :线性表 Java Se :Map 系列 JavaSe:Properties文件格式 [Java Annotation] Java Annotation 学习 [Java JDBC] JDBC Driver Types JDBC API Description [Java agent,debug,manifest] Java:Remote Debug JavaSe:-javaagent,

zabbix使用zabbix_java_gateway 监控java应用进程

JAVA-GATEWAY Zabbix本身不支持直接监控Java,在zabbix 1.8以前,只能使用Zapcat来做代理监控,而且要修改源代码,非常麻烦.所有后来为了解决这个监控问题,Zabbix和Java双方应运生成了各自的代理监控程序:zabbix 2.0以后添加了服务进程zabbix-java-gateway:Java有了JMX,全称是Java Management Extensions,即Java管理扩展 比如:当Zabbix-Server需要知道java应用程序的某项性能的时候,会启

JMX 与系统管理--转

前言 在 Java 程序的运行过程中,对 JVM 和系统的监测一直是 Java 开发人员在开发过程所需要的.一直以来,Java 开发人员必须通过一些底层的 JVM API,比如 JVMPI 和 JVMTI 等,才能监测 Java 程序运行过程中的 JVM 和系统的一系列情况,这种方式一直以来被人所诟病,因为这需要大量的 C 程序和 JNI 调用,开发效率十分低下.于是出现了各种不同的专门做资源管理的程序包.为了解决这个问题,Sun 公司也在其 Java SE 5 版本中,正式提出了 Java 管

使用Collectd + InfluxDB + Grafana进行JMX监控

我们已经看到使用Collectd监控CPU /内存利用率(本文).但它没有提供所有信息来确定性能问题的瓶颈.在本文中,我们将使用Collectd Java插件来使用其JMX技术来监视和管理Java虚拟机(JVM). 目标: 使用Java的JMX技术监视和管理Java虚拟机(JVM). 建筑: 我们的高级架构如下所示 - 我们将监控所有应用服务器,JMeter服务器和JMeter-master的JVM. JMX(Java托管扩展): JMX是在Java 5.0发行版中引入的,用于在运行时管理/监视

zookeeper 安装 配置集群

https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/ [[email protected] src]# tar -xzvf zookeeper-3.5.2-alpha.tar.gz [[email protected] src]# ls zookeeper-3.5.2-alpha zookeeper-3.5.2-alpha.tar.gz [[email protected] zookeeper-3.5.2-alpha]# ls bin iv