`

JMX 入门例子

    博客分类:
  • JMX
阅读更多



 

     JMX(Java Management Extensions,即Java管理扩展)是一个为应用程序、设备、系统等植入管理功能的框架。JMX可以跨越一系列异构操作系统平台、系统体系结构和网络传输协议,灵活的开发无缝集成的系统、网络和服务管理应用。

 

  我们还是从JMX能给我们提供什么好处入手来理解吧。举一个应用实例:在一个系统中常常会有一些配置信息,比如服务的IP地址,端口号什么的,那么如何来写这些代码呢?

1、初级程序员一般是写死在程序里,到要改变时就去改程序,然后再编译发布;

2、程序熟手则一般把这些信息写在一个配置文件里(JAVA一般都是*.properties文件),
    到要改变时只要改配置文件,但还是重新启动系统,以便读取配置文件里的新值;

3、程序好手则会写一个段代码,把配置值缓存起来,系统在读值的时候,先看看配置文件有
    没有更动。如有更改则重读一遍,否则从缓存里读取值

4、程序高手则懂得取物为我所用,用JMX!把配置属性集中在一个类,然后写一个叫MBean
    的东东,再配置一下就轻松搞定了。而且JMX自动提供了一个WEB页面来给你来改变这些
    配置信息。

 

参考Java提供的例子(需要 jdk1.6):

http://download.oracle.com/javase/6/docs/technotes/guides/jmx/examples.html

 

1. 需要被管理类的接口  HelloMBean.java  (规范一般是***MBean.java)

 

/* HelloMBean.java - MBean interface describing the management
   operations and attributes for the Hello World MBean.  In this case
   there are two operations, "sayHello" and "add", and two attributes,
   "Name" and "CacheSize". */

package com.example.mbeans;

public interface HelloMBean {
    // operations

    public void sayHello();
    public int add(int x, int y);

    // attributes

    // a read-only attribute called Name of type String
    public String getName();

    // a read-write attribute called CacheSize of type int
    public int getCacheSize();
    public void setCacheSize(int size);
}

 

2. 需要管理的类  Hello.java  (通常是实现**MBean.java)

/* Hello.java - MBean implementation for the Hello World MBean.
   因篇幅所限,把examples带的注释去掉了,自己可以下载看  */

package com.example.mbeans;

public class Hello implements HelloMBean {
    public void sayHello() {
	System.out.println("hello, world");
    }

    public int add(int x, int y) {
	return x + y;
    }

    public String getName() {
	return this.name;
    }

     public int getCacheSize() {
	return this.cacheSize;
    }

    public synchronized void setCacheSize(int size) {
	this.cacheSize = size;

	System.out.println("Cache size now " + this.cacheSize);
    }

    private final String name = "Reginald";
    private int cacheSize = DEFAULT_CACHE_SIZE;
    private static final int DEFAULT_CACHE_SIZE = 200;
}

 

 

3. 代理/注册类 Main.java

package com.example.mbeans;

import java.lang.management.*;
import javax.management.*;

public class Main {
    /* For simplicity, we declare "throws Exception".  Real programs
       will usually want finer-grained exception handling.  */
    public static void main(String[] args) throws Exception {
	// Get the Platform MBean Server
	MBeanServer mbs = ManagementFactory.getPlatformMBeanServer();

	// Construct the ObjectName for the MBean we will register
	ObjectName name = new ObjectName("com.example.mbeans:type=Hello");

	// Create the Hello World MBean
	Hello mbean = new Hello();

	// Register the Hello World MBean
	mbs.registerMBean(mbean, name);

	// Wait forever
	System.out.println("Waiting forever...");
	Thread.sleep(Long.MAX_VALUE);
    }
}

 

4. 编译、测试运行上面的程序

 

javac com/example/mbeans/*.java

# 启动程序

java com.example.mbeans.Main

另起一个命令行或者cmd:

运行jconsole  (# JConsole is located in $(J2SE_HOME)/bin/jconsole) 可以看到,选择本地的进程 com.example.mbeans 连接 就可以进行管理了。

 


 

管理界面:

 



 
修改cacheSize 大小,可以在启动Main的命令行窗口看到修改生效。

 


 

其它examples下载:

 

 

 

 

  • 大小: 25.3 KB
  • 大小: 35.9 KB
  • 大小: 2.2 KB
5
2
分享到:
评论
4 楼 yangsong158 2013-08-30  
rabbit9898 写道
xiansuanla 写道
我运行 main方法以后 cmd 里面运行 jconsole 弹出的窗口中 本地里面是空的没有连接,怎么办?

在菜单“连接” --> 新建连接 中 没有?或者 是不是防火墙是原因?

你看看。空的那个,是不是eclipse的进程。我也发现了这个问题,不过空的那个pid是eclipse的。如果能启得来的话,应该是能看到至少三个连接的。
1.  JConsole的
2.Eclipse的
3.JMX示例Main的
3 楼 rabbit9898 2013-08-23  
xiansuanla 写道
我运行 main方法以后 cmd 里面运行 jconsole 弹出的窗口中 本地里面是空的没有连接,怎么办?

在菜单“连接” --> 新建连接 中 没有?或者 是不是防火墙是原因?
2 楼 xiansuanla 2013-08-23  
我运行 main方法以后 cmd 里面运行 jconsole 弹出的窗口中 本地里面是空的没有连接,怎么办?
1 楼 fujuya 2012-11-08  
mark

相关推荐

    spring框架下jmx入门例子

    在spring框架下使用jmx,可以动态修改远程服务端的属性,使用http协议,可以直接通过IE查看运行结果

    jmx入门例子源码 (含jmxtools.jar包)

    jmx入门的源码例子,包括所需jar包,下载后把jmxtools.jar加入classpath中,然后启动程序, 可以在IE中查看mbean,也可以jconsole中查看

    jmx 入门文档,附有开发实例文档

    jmx 入门文档,附有开发实例文档附有开发实例文档附有开发实例文档

    最简单JMX例子

    入门好例子,希望对大家有用,eclipse下导入直接可以运行。

    jmx入门

    一份文档和一个简单的例子,希望对大家有用

    kafka_pepper_box.jmx

    这是一个Jmeter对Kafka压测的小例子,里面使用了pepper-box插件,实现了Kafka的生产者和消费者,对于入门者来说看这个就够了,如有疑问请移步博客:https://blog.csdn.net/shan286/article/details/105216381。

    JMXScripter:用于将JMX导出器下载并配置到您的Kafka实例上的脚本

    入门克隆此仓库git clone https://github.com/oslabs-beta/JMXScripter.git 在根文件夹node index.js运行该应用程序重要笔记默认情况下,从您的Kafka实例从JMX导出器导出的信息被写入localhost:7075。 如果要更改此...

    学生实例.jmx-JMteter学习报告(一)对用的脚本

    JMteter学习报告(一)对用的脚本,知识部分在写文件参数化时修改了,但不影响使用,适合入门参考。不想下载,私聊可以发给你。

    ZABBIX从入门到精通v3.0.1+-+运维生存时间(2016).pdf

    目录 前言 6 版本记录 8 第一章:简介 9 Zabbix 介绍 9 Zabbix ...zabbix自定义用户自定义用户keykey与参数与参数User parametersUser parameters .....................................................................

    activeMQ 入门级demo

    首先去...⒉ 有的时候由于端口被占用,导致ActiveMQ错误,ActiveMQ可能需要以下端口1099(JMX),61616(默认的TransportConnector) ⒊ 如果没有物理网卡,或者MS的LoopBackAdpater Multicast会报一个错误

    JBOSS使用指南

    一.JBOSS入门 1.下载和安装JBoss 2.JBoss的目录结构 3.启动服务器 4.JMX控制台 5.停止服务器 6.JBoss中的部署 二.JBOSS的配置 1. JBoss日志设置 2. web 服务的端口号的修改 3. JBoss 的安全设置 3.1 jmx-console ...

    JAVA上百实例源码以及开源项目源代码

     Java二进制IO类与文件复制操作实例,好像是一本书的例子,源代码有的是独立运行的,与同目录下的其它代码文件互不联系,这些代码面向初级、中级Java程序员。 Java访问权限控制源代码 1个目标文件 摘要:Java源码,...

    Java SE实践教程 pdf格式电子书 下载(四) 更新

    内容简介:此书结合具体实例讲解,通俗易懂,又不乏深度。我觉得这本书写的确实不错,堪称经典,市面上这样的书实在太少了,所以在这里发布下,供大家共享。本书从编程技术、项目实践以及软件工程的角度出发,如果...

    springMongodb参考文档中文版

    执行一个例子 9.7.5。无类型示例 9.8。减少地图操作 9.8.1。使用示例 9.9。脚本操作 9.9.1。使用示例 9.10。集团运营 9.10.1。使用示例 9.11。聚合框架支持 9.11.1。基本概念 9.11.2。支持的聚合操作 9.11.3。投影...

    hibernate+中文api

    1. Hibernate入门 1.1. 前言 1.2. 第一部分 - 第一个Hibernate应用程序 1.2.1. 第一个class 1.2.2. 映射文件 1.2.3. Hibernate配置 1.2.4. 用Ant构建 1.2.5. 启动和辅助类 1.2.6. 加载并存储对象 1.3. 第...

    (2.0版本)自己写的struts2+hibernate+spring实例

    common.jar jboss-jmx.jar jboss-system.jar jacc-1_0-fr.jar jgroups-2.2.8.jar oscache-2.1.jar proxool-0.8.3.jar swarmcache-1.0rc2.jar classes12.jar spring.jar ...

    JAVA上百实例源码以及开源项目

     Java二进制IO类与文件复制操作实例,好像是一本书的例子,源代码有的是独立运行的,与同目录下的其它代码文件互不联系,这些代码面向初级、中级Java程序员。 Java访问权限控制源代码 1个目标文件 摘要:Java源码,...

    jmeter-prometheus-plugin:Apache JMeter的Prometheus侦听器,可在http API中公开结果

    这是一个使我们入门的简单示例。 这个例子。 本自述文件的所有文档均来自此jmx文件。 如果我们仔细观察第一个Prometheus监听器,它看起来像下面的图片。 让我们逐一浏览所有列。 名称:指标的名称。 帮助:度量...

    drupal-soap-adapter:一种 SOAP 服务(和 WSDL),适用于需要静态类型声明的旧系统的 Drupal REST API。 出于某种原因用Java编写

    部署后,该服务有效地提供了一个“适配器”层,而不是位于您的 Drupal 实例前面。 配置完全通过 JMX 完成,并且可以在运行时设置和更改而无需重新编译或重新部署 .war。 部署要求 在 Java 7 或更高版本上运行的最新 ...

Global site tag (gtag.js) - Google Analytics