JMX学习笔记(一)-MBean

JMX学习笔记(一)-MBean

标签: jmxstringjavainterfaceexceptionclass
 分类:
JMX(11) 

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

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

 

 

Java代码 复制代码
  1. package com.haitao.jmx;   
  2.   
  3. /**  
  4.  * JMX MBean Interface  
  5.  *   
  6.  * @author haitao.tu  
  7.  *   
  8.  */  
  9. public interface EchoMBean {   
  10.   
  11.     public void print(String yourName);   
  12.   
  13. }  
[java] view plaincopy
  1. package com.haitao.jmx;  
  2.   
  3. /** 
  4.  * JMX MBean Interface 
  5.  *  
  6.  * @author haitao.tu 
  7.  *  
  8.  */  
  9. public interface EchoMBean {  
  10.   
  11.     public void print(String yourName);  
  12.   
  13. }  

 

 

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

 

 

Java代码 复制代码
  1. package com.haitao.jmx;   
  2.   
  3. /**  
  4.  * Implements of JMX EchoMBean  
  5.  *   
  6.  * @author haitao.tu  
  7.  *  
  8.  */  
  9. public class Echo implements EchoMBean {   
  10.   
  11.     @Override  
  12.     public void print(String yourName) {   
  13.         System.out.println("Hi " + yourName + "!");   
  14.     }   
  15.        
  16. }  
[java] view plaincopy
  1. package com.haitao.jmx;  
  2.   
  3. /** 
  4.  * Implements of JMX EchoMBean 
  5.  *  
  6.  * @author haitao.tu 
  7.  * 
  8.  */  
  9. public class Echo implements EchoMBean {  
  10.   
  11.     @Override  
  12.     public void print(String yourName) {  
  13.         System.out.println("Hi " + yourName + "!");  
  14.     }  
  15.       
  16. }  

 


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

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

Java代码 复制代码
  1. package com.haitao.jmx;   
  2.   
  3. import java.lang.management.ManagementFactory;   
  4.   
  5. import javax.management.MBeanServer;   
  6. import javax.management.ObjectName;   
  7.   
  8. /**  
  9.  * JMX App Demo  
  10.  *   
  11.  * @author haitao.tu  
  12.  */  
  13. public class App {   
  14.        
  15.     public static void main(String[] args) throws Exception {   
  16.         // 创建MBeanServer   
  17.         MBeanServer mbs = ManagementFactory.getPlatformMBeanServer();   
  18.            
  19.         // 新建MBean ObjectName, 在MBeanServer里标识注册的MBean   
  20.         ObjectName name = new ObjectName("com.haitao.jmx:type=Echo");   
  21.            
  22.         // 创建MBean   
  23.         Echo mbean = new Echo();   
  24.            
  25.         // 在MBeanServer里注册MBean, 标识为ObjectName(com.tenpay.jmx:type=Echo)   
  26.         mbs.registerMBean(mbean, name);   
  27.   
  28.            
  29.         // 在MBeanServer里调用已注册的EchoMBean的print方法   
  30.         mbs.invoke(name, "print", new Object[] { "haitao.tu"}, new String[] {"java.lang.String"});   
  31.            
  32.         Thread.sleep(Long.MAX_VALUE);   
  33.     }   
  34.   
  35. }  
[java] view plaincopy
  1. package com.haitao.jmx;  
  2.   
  3. import java.lang.management.ManagementFactory;  
  4.   
  5. import javax.management.MBeanServer;  
  6. import javax.management.ObjectName;  
  7.   
  8. /** 
  9.  * JMX App Demo 
  10.  *  
  11.  * @author haitao.tu 
  12.  */  
  13. public class App {  
  14.       
  15.     public static void main(String[] args) throws Exception {  
  16.         // 创建MBeanServer  
  17.         MBeanServer mbs = ManagementFactory.getPlatformMBeanServer();  
  18.           
  19.         // 新建MBean ObjectName, 在MBeanServer里标识注册的MBean  
  20.         ObjectName name = new ObjectName("com.haitao.jmx:type=Echo");  
  21.           
  22.         // 创建MBean  
  23.         Echo mbean = new Echo();  
  24.           
  25.         // 在MBeanServer里注册MBean, 标识为ObjectName(com.tenpay.jmx:type=Echo)  
  26.         mbs.registerMBean(mbean, name);  
  27.   
  28.           
  29.         // 在MBeanServer里调用已注册的EchoMBean的print方法  
  30.         mbs.invoke(name, "print", new Object[] { "haitao.tu"}, new String[] {"java.lang.String"});  
  31.           
  32.         Thread.sleep(Long.MAX_VALUE);  
  33.     }  
  34.   
  35. }  

 



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

 

开后会看到:

 

 

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

 

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

 

 

2.VisualVM

 

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

 

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

 

转载于:https://www.cnblogs.com/developer-ios/p/5775762.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/490137.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

关于大脑未必是破解智能和意识之谜的钥匙探讨

来源:刘锋的未来课堂“人脑能创造11维结构”是瑞士的研究机构蓝脑(Blue Brain)的一个研究结论,蓝脑(Blue Brain)研究所主要目标是建立一个由超级计算机驱动的人脑模型。这篇短文主要是由《崛起的超级智能》…

结构化分析和面向对象分析的区别 例子_管理游戏测评例子

在测评中心技术中,有一个非常有趣的场景的模拟测评,打造敏捷高绩效团队,提高执行力(包括人才测评),旨在帮助学生培养自主性,了解自己,以独立的意见做出决策,采取果断的行动;培养赋权…

qtablewidget 选中不改变背景_C4D制作不一样的核壳结构

在科研绘图中,三维模型图相对于二维平面图片可以展示更多的信息,尤其是在做纳米结构设计和制备时,三维模型图可以直观地表现出材料的设计思路和合成路径。比如在这篇发表于Joule杂志的高水平、高颜值、将纳米美学展现的淋漓尽致的paper中(Ref…

城科会刘朝晖:从互联网大脑模型看城市大脑

刘朝晖中国城市科学研究会城市大数据专业委员会副主任委员中国生态城市研究院首席科学家按照凯文凯利的观点,技术体和生命体都是一种进化现象。刘锋博士的《崛起中的超级智能》显然秉承了类似的视角,基于哲学高度和宇宙现象对我们这个时代正在爆发的人工…

java tostring方法_Java虚拟机如执行方法调用的(二)?

虚方法调用Java里所有非私有实例方法调用都会被编译成invokevirtual指令. 接口方法调用都会被编译成invokeinterface指令.这两种指令都属于Java虚方法的调用.在大多数情况下, Java虚拟机需要根据调用者的动态类型, 来确定虚方法调用的目标方法.这个过程被称为动态绑定. 那么相对…

[笔记]cin、cout与scanf、printf的效率差异对比分析

之前上传UVa227 puzzle时,好不容易AC了,但发现自己用时50(ms),而在VJ上看到人家都是40ms、20ms,于是打开一个20ms的代码查看人家强在哪里。但结果研究了半天感觉差不多,于是想着应该不是算法的问题。然后又想到&#x…

“智联网与未来”——第14届中国信息技术年会院士精彩观点辑录

来源:科技导报编者按 以智慧互联为目标的智联网系统是未来信息网络的发展方向,将引发人类社会向智慧社会的重大变革。在中国电子学会、工业和信息化部电子科学技术委员会等主办的第14届中国信息技术年会上,学者热议“智联网与未来”&#xf…

什么是java的元数据_学习大数据,为什么要先学习Java?

是新朋友吗?记得先点蓝字关注我哦~今日课程菜单Java全栈开发 | Web前端H5大数据开发 | 数据分析人工智能Python | 人工智能物联网来源:小职(z_zhizuobiao)找我:✅ 解锁高薪工作 ✅ 免费获取干货教程未完待续很多人初学的第一门语言…

记忆的天空:“崩塌型”记忆活动原理

作者:钟振余宁波大学副教授,工科背景,专注于脑科学神经信息活动机制研究。记忆是大脑活动原理的重要研究内容。相对于现代科学的高速发展,人类对于大脑活动原理的了解仍处在初级阶段。差不多半个多世纪之前,意识灵魂论…

飞天智能:阿里云的 AI 落地野心

来源:大叔爱吐槽CSDN当下,AI 业界不会否认的一个事实是,AI实力的比拼不再是单点的算法技术能力,而是从底层算法到应用平台的全面AI能力。单纯的算法,只是实验室里的乐趣,唯有结合商业的数据处理能力和技术变…

oracle把时间段转换成每一天_在家办公难适应?来看看专职外汇交易员的一天

万万没想到,曾经幻想的躺在床上把钱赚,居然成真了!这不,受疫情的影响,不少人在家开工了!今天是主流人群在家办公的第三天,然而,很多人表示:自己依然没有适应在家办公的节…

UVALive 7455 Linear Ecosystem (高斯消元)

Linear Ecosystem题目链接: http://acm.hust.edu.cn/vjudge/contest/127401#problem/B Description http://7xjob4.com1.z0.glb.clouddn.com/99b0fe905e5bd89a24c882832c93cc09 Input The first line of the input file contains an integer, n, which is the numbe…

华为诺亚方舟实验室—推荐系统中的前沿技术研究与落地报告

来源:专知【导读】9月6-7日,2019中国AI开发者大会(AI ProCon 2019) 在北京拉开帷幕。本次大会由新一代人工智能产业技术创新战略联盟(AITISA)指导,鹏城实验室、北京智源人工智能研究院支持&…

u盘锁电脑_程序员用U盘偷公司源码被抓;Rust 语言发布 5 周年

(给技术最前线加星标,每天看技术热点)综合整理:技术最前线(ID:TopITNews)参考:程序员的那些事、开源中国、solidot、cnBeta、腾讯科技等0、程序员用U盘偷公司源码被判刑2018年5月18日18时20分许,温某某在广州三七互娱科…

20幅漫画告诉你未来世界是怎样的

导读:在你心目中的(不太遥远的)未来是什么样的?名为Futurism Cartoons的作者绘制了一系列以“未来”为主题的漫画,其中多幅跟人工智能及你大数据有关,你们来感受一下……来源:大叔爱吐槽0102030…

c++ qt获取电脑的内存_Qt官方示例-TCP客户端/服务器示例

该示例演示了在本地主机上的TCP客户端和服务器是如何通讯的。客户端 绑定信号槽。connect(&tcpClient, &QAbstractSocket::connected, this, &Dialog::startTransfer); /* 连接到服务器时回送消息给服务器 */ connect(&tcpClient, &QIODevice::bytesWritte…

下一个10年,解决问题靠“大脑”

前言:本文是网络智库举办的《崛起的超级智能:互联网大脑如何影响科技未来》新书分享会记录,作者刘锋主讲,深入阐述了科技时代谷歌大脑,百度大脑,阿里大脑,腾讯大脑,城市大脑&#xf…

JavaMail发送邮件

使用javax.mail可以发送普通文本文件,HTML格式的文件,同样可以发送图文并茂(包含附件)的java邮件。 发送邮件需要在验证发送的邮箱和密码:验证的帐号(本人使用163邮件)需要打开POP3/SMTP/IMAP 设置邮箱授权登录密码(已设置好): 新建java项目添…

cf两边黑屏怎么解决win10_关闭自动睡眠仍然睡眠?Win10过几分钟就会自动睡眠黑屏解决方法...

近期有Win10网友遇到一个奇怪的问题,已经设置了关闭了睡眠,也设置了从不关闭显示器,但是大概2分钟-3分钟不动鼠标或者对电脑无操作的时候,电脑就会出现自动睡眠黑屏的情况,网友根据网上的解决这个问题相关帖子进行操作…

Word如何固定页面内容在某一页开头

在写论文时经常需要新起一页从第一行写新的一章,那么如何固定这一页的内容是从这一页第一行开始写的呢? 例如需要将参考文献放在新的一页中开始写,那么在上一页的最后位置插入“分隔符”→“分页符”即可