`
tuhaitao
  • 浏览: 379244 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

JMX学习笔记(一)-MBean

    博客分类:
  • java
阅读更多

JMX        即 Java Management Extensions   Java管理扩展
MBean   即 managed beans                         被管理的Beans

一个MBean是一个被管理的Java对象,有点类似于JavaBean,一个设备、一个应用或者任何资源都可以被表示为MBean,MBean会暴露一个接口对外,这个接口可以读取或者写入一些对象中的属性,通常一个MBean需要定义一个接口,以MBean结尾, 例如: EchoMBean, 格式为XXXMBean,这个是规范,必须得遵守。例如:

 

 

package com.haitao.jmx;

/**
 * JMX MBean Interface
 * 
 * @author haitao.tu
 * 
 */
public interface EchoMBean {

	public void print(String yourName);

}
 

 

很简单的,在EchoMBean接口中,定义了一个print方法,带一个yourName的String类型参数,只有接口貌似没什么用,下边我们实现这个接口

 

 

package com.haitao.jmx;

/**
 * Implements of JMX EchoMBean
 * 
 * @author haitao.tu
 *
 */
public class Echo implements EchoMBean {

	@Override
	public void print(String yourName) {
		System.out.println("Hi " + yourName + "!");
	}
	
}
 


Echo实现了EchoMBean接口,很简单我们只是print了hi yourName!

按照JMX的定义,是被管理的对象,现在我们只是定义了该对象,并没有被管理,接着我们让这个Echo类的实例对象被管理起来:

package com.haitao.jmx;

import java.lang.management.ManagementFactory;

import javax.management.MBeanServer;
import javax.management.ObjectName;

/**
 * JMX App Demo
 * 
 * @author haitao.tu
 */
public class App {
	
	public static void main(String[] args) throws Exception {
		// 创建MBeanServer
		MBeanServer mbs = ManagementFactory.getPlatformMBeanServer();
		
		// 新建MBean ObjectName, 在MBeanServer里标识注册的MBean
		ObjectName name = new ObjectName("com.haitao.jmx:type=Echo");
		
		// 创建MBean
		Echo mbean = new Echo();
		
		// 在MBeanServer里注册MBean, 标识为ObjectName(com.tenpay.jmx:type=Echo)
		mbs.registerMBean(mbean, name);

		
		// 在MBeanServer里调用已注册的EchoMBean的print方法
		mbs.invoke(name, "print", new Object[] { "haitao.tu"}, new String[] {"java.lang.String"});
		
		Thread.sleep(Long.MAX_VALUE);
	}

}
 



1. 首先我们在App类中向ManagementFactory申请了一个MBeanServer对象
2. 接着我们即然要使Echo的实例对象被管理起来,我们就需要给这个对象一个标识,这个标识是ObjectName.注意这个ObjectName构造函数,这里使用了(包名:type=类名)的形式.
3. 然后我们通过mbs.registerMBean方法注册了echo,并传入了ObjectName在MBeanServer中标识该MBean.
4. 随后我们通过mbs.invoke方法调用了已经注册的Echo的print方法,通过ObjectName找到该MBean, 并通过最后两个参数,传入print方法执行的参数,与参数的类型。
5. 最后我们sleep主线程,等待其他线程的调用.

通过这个例子我们可以看出,MBean的好处,在Echo的实例对象未被管理之前,我们只能通过Echo对象的句柄,来调用Echo里的public方法,在被管理之后,我们可以通过MBeanServer的句柄mbs来调用Echo对象的print方法。

更详细的内容,我们可以通过JDK自带工具jconsole或者 VisualVM 来查看MBean:

 

1.jconsole

 

jconsole的位置在%JAVA_HOME%\bin\jconsole.exe

 

开后会看到:

jconsole

 

 

选择com.haitao.jmx.App,然后点击连接, 选择MBean后会看到

jconsole-MBean

 

这里可以直接调用Echo的print方法, 当然大家看到这里边还有好多其他的table,包括概述、内存、线程、类、VM摘要、MBean。

 

 

2.VisualVM

 

VisualVM的位置在%JAVA_HOME%\bin\jvisualvm.exe

 

打开后经过连接我们会看到类似的效果:

 

 

VisualVM

 

 

分享到:
评论
4 楼 speeder622 2014-04-16  
赞,认识了两个工具
3 楼 mingway 2013-11-07  
学习中,谢谢
2 楼 jixuan1989 2013-09-14  
超级赞! 简单明了!
1 楼 zeallf 2010-11-02  
写的挺详细,JMX笔记二呢?

相关推荐

    JMX(一)-------MBean server

    **JMX(一)——MBean Server** Java Management Extensions (JMX) 是Java平台上的一个标准,用于管理和监控应用程序、设备和服务。它提供了一个灵活的框架,使得开发者能够轻松地创建可管理的组件,并通过标准接口...

    Java分布式应用学习笔记09JMX-MBean的介绍

    ### Java分布式应用学习笔记09JMX-MBean的介绍 #### MBean概念及作用 MBean,即Managed Bean,是在JMX(Java Management Extensions)框架中用于管理资源的一种特殊Java对象。通过MBean,可以方便地对应用程序进行...

    Java分布式应用学习笔记09JMX-MBean的介绍.doc

    java

    agent-jmx-3.0.1-javadoc.jar

    标签:agent-jmx-3.0.1-javadoc.jar,agent,jmx,3.0.1,javadoc,jar包下载,依赖包

    jmx-1_2_1-ri.zip jmx_remote-1_0_1_03-ri.zip jmx-1_1-mr-spec.zip

    1. **jmx-1_2_1-ri.zip**:这个文件提供了JMX 1.2.1版本的运行时实现(Runtime Implementation,RI)。RI是JMX规范的具体实现,允许开发者在Java应用程序中使用JMX功能,如创建MBeans(Managed Beans),管理对象和...

    tomcat9监控jar包,catalina-jmx-remote java-visualVM专用

    tomcat9监控jar包,catalina-jmx-remote java-visualVM专用

    tomcat8监控jar包,catalina-jmx-remote java-visualVM专用

    tomcat8监控jar包,catalina-jmx-remote java-visualVM专用

    JMX (三)--------spring整合JMX

    **JMX(Java Management Extensions)**是Java平台提供的一种用于管理与监控应用程序、操作系统和网络设备的标准框架。在本文中,我们将深入探讨JMX如何与Spring框架整合,以实现更高效的服务管理和监控。 首先,**...

    tomcat7监控jar包,catalina-jmx-remote java-visualVM专用

    tomcat7监控jar包,catalina-jmx-remote java-visualVM专用

    tomcat-catalina-jmx-remote-9.0.5.jar

    tomcat-catalina-jmx-remote-9.0.5 tomcat-catalina-jmx-remote-9.0.5.jar

    cmdline-jmxclient-0.10.3.jar

    通过配置tomcat/bin/catalina.sh使用。使用方法参照:https://blog.51cto.com/13700457/2397812

    jmxri-1.2.1.jar+jmxtools-1.2.1.jar

    Java Management Extensions (JMX) 是Java平台上的一个标准技术,用于管理和监控应用程序、操作系统和网络设备。`jmxri-1.2.1.jar` 和 `jmxtools-1.2.1.jar` 是与JMX相关的两个核心库文件,它们在Java应用程序中扮演...

    JMX(二)----connectors

    NULL 博文链接:https://90haofang-163-com.iteye.com/blog/1902211

    jmx-tools.zip

    `jmx-tools.zip`这个压缩包可能包含了一些用于操作和可视化JMX功能的工具。 `HtmlAdaptorServer`是JMX提供的一种机制,它允许通过HTTP协议访问和管理MBeans。这个服务器实现了一个JMX远程过程调用(RMI)接口,使得...

    jmx-dump:将JMX指标作为JSON转储到命令行

    brew install jmx-dump 旧版本。 用法 使用发行版中的独立二进制文件或jar。 $ jmx-dump --help Dump JMX Metrics Usage: jmx-dump [options] -a, --attrs MBEAN List attributes of mbean MBEAN -c, --creds ...

    亲测可用 com.sun.jmx. jmxri-1.2.1.jar

    Description Resource Path Location Type Missing artifact com.sun.jmx:jmxri:jar:1.2.1 pom.xml /eshop-storm line 2 Maven Dependency Problem

    cmdline-jmxclient-0.10.3.jar + zabbix tomcat监控模板

    JMX是一种标准的Java技术,用于管理和监控Java应用程序的运行状态,包括内存使用、线程信息、MBean(管理beans)等。 1. **JMX基础**: - JMX是Java平台的一个核心组件,它提供了一种统一的方式来管理和监控应用...

    JMX官方文档 - 概览,入门,规范

    Java Management Extensions(JMX)是Java平台上的一个标准技术,用于管理和监控应用程序、操作系统和网络设备等资源。在JDK1.6版本中,JMX已经成熟并被广泛使用。本篇文章将深入探讨JMX的基本概念、核心组件、功能...

    书籍JMX-IN-ACTION

    《JMX in Action》是一本深入探讨Java管理扩展(Java Management Extensions, JMX)技术的专业书籍,对于希望理解和掌握JMX的IT从业者来说,是一份不可或缺的参考资料。JMX是Java平台上的一个标准组件,它提供了管理...

    JDK18-java-management-extensions-guide.pdf

    JMX API提供了一组接口和类,用于访问和控制MBean Server和MBean。主要包括: 1. MBeanServerConnection:用于连接MBean Server的接口。 2. MBeanServer:MBean Server的接口,提供了对MBean的管理和访问接口。 3. ...

Global site tag (gtag.js) - Google Analytics