MXBean是一种MBean。

只会引用有限的几种数据类型,predefined set of data types

如此,任何client都可以访问MXBean,包括远程client。client无需能访问到MXBean的attribute 的class。

命名规范:

接口 : XXXMXBean。或者用@MXBean注释,也可任意指定。

实现类 : 任意。

MXBean中的attribute可以是任意类的对象ClassA,而client无需ClassA的classpath也可以访问此MXBean的attribute。

ClassA的对象会被映射为Open Types。

javax.management.openmbean.CompositeData

Open Types :

javax.mamagement.openmbean.*

示例:

package test.xue.mxbean.model;import java.beans.ConstructorProperties;
import java.util.Date;public class QueueSample {private final Date date;private final int size;private final String head;/*** MXBean framework calls getters to convert this into a javax.management.openmbean.CompositeData* ConstructorProperties reconstruct this from a COmpositeData*/@ConstructorProperties({ "date", "size", "head" })public QueueSample(Date date, int size, String head) {this.date = date;this.size = size;this.head = head;}public Date getDate() {return date;}public int getSize() {return size;}public String getHead() {return head;}
}

Remote Management Application的classpath中不会有QueueSample,因此MXBean framework会将QueueSample转换为CompositeData。

MXBean示例:

package test.xue.mxbean;import test.xue.mxbean.model.QueueSample;public interface QueueSamplerMXBean {public QueueSample getQueueSample(); // attributepublic void clearQueue(); // operation
}
package test.xue.mxbean;import java.util.Date;
import java.util.Queue;import test.xue.mxbean.model.QueueSample;public class QueueSampler implements QueueSamplerMXBean {private Queue<String> queue;public QueueSampler(Queue<String> queue) {this.queue = queue;}@Overridepublic QueueSample getQueueSample() {synchronized (queue) {return new QueueSample(new Date(), queue.size(), queue.peek());}}@Overridepublic void clearQueue() {synchronized (queue) {queue.clear();}}}

JMX agent:

package test.xue.mxbean;import java.lang.management.ManagementFactory;
import java.util.Queue;
import java.util.concurrent.ArrayBlockingQueue;import javax.management.InstanceAlreadyExistsException;
import javax.management.MBeanRegistrationException;
import javax.management.MBeanServer;
import javax.management.MalformedObjectNameException;
import javax.management.NotCompliantMBeanException;
import javax.management.ObjectName;public class QueueSampleAgent {public static void main(String[] args) throws MalformedObjectNameException,NullPointerException, InstanceAlreadyExistsException,MBeanRegistrationException, NotCompliantMBeanException,InterruptedException {MBeanServer server = ManagementFactory.getPlatformMBeanServer();ObjectName name = new ObjectName("test.xue.mxbean:type=QueueSample");Queue<String> queue = new ArrayBlockingQueue<String>(10);queue.add("Element-1");queue.add("Element-2");queue.add("Element-3");QueueSampler mxbean = new QueueSampler(queue);server.registerMBean(mxbean, name);System.out.println("waiting here for remote management...");Thread.sleep(Long.MAX_VALUE);}
}

使用JConsole测试:

可以看到,attribute QueueSample的类型转换为了CompositeData。

区别:

MXBean的代码看起来和Standard MBean没什么区别,唯一的无别在于Bean的名字后缀是MXBean,而不是MBean。

但是,如果把QueueSamplerMXBean变为QueueSamplerMBean,那么就由MXBean变为了Standard MBean。

此时,JConsole测试结果为 :

可以看到,此时attribute QueueSample的值已经变为了“不可见”,因为JConsole的classpath中没有QueueSample。

JMX : MXBean相关推荐

  1. 垃圾收集算法,垃圾收集器_确定活动的热点垃圾收集器

    垃圾收集算法,垃圾收集器 StackOverflow问题查找正在运行哪种类型的垃圾收集 器,jvm的默认垃圾收集器 , 如何通过查看gc日志来查看正在运行的垃圾收集器? ,以及如何知道HotSpot ...

  2. 确定活动的热点垃圾收集器

    StackOverflow问题查找正在运行哪种类型的垃圾收集 器,jvm的默认垃圾收集器 , 如何通过查看gc日志来查看正在运行的垃圾收集器? ,以及如何知道HotSpot jvm的当前GC策略? 和 ...

  3. JMX自定义MXBean

    MXBean接口 一个MBean由一个MBean接口(该MBean接口列出了所有被暴露的属性和操作对应的方法)和一个class(这 个class实现了这个MBean接口并提供被监测资源的功能)组成. ...

  4. jmx使用应该注意的基本规范

    1.标准MBean 名称必需是在要监控的类名后面加上"MBean ". 2.监控的类和MBean 接口必需在同一包下,也可以理解为注册的接口名字必须以MBean结尾,接口实现类比接 ...

  5. spring源码分析之spring jmx

    JMX架构定义: https://docs.oracle.com/javase/8/docs/technotes/guides/jmx/overview/architecture.html Archi ...

  6. JMX 与系统管理--转

    前言 在 Java 程序的运行过程中,对 JVM 和系统的监测一直是 Java 开发人员在开发过程所需要的.一直以来,Java 开发人员必须通过一些底层的 JVM API,比如 JVMPI 和 JVM ...

  7. JMX和Spring –第3部分

    本文是本系列的最后一篇. 看一下第1 部分和第2部分 . 在本系列的最后一篇文章中,我将展示如何在JDK中使用本机JMX支持来实现一种通知机制,该机制可以在HEAP内存超过特定阈值时向侦听器发出警报. ...

  8. 【jmx】JMX最佳实践与详解

    1.概述 转载:https://www.iteye.com/blog/shift-alt-ctrl-2404103 2.JMX最佳实践 1.Object Names(对象命名) 每个JMX MBean ...

  9. 【JMX】-----JMX概述

    文章目录 1.简介 2.JMX基本术语 3.JMX架构 3.1 分布层(Distributed layer) 3.2 代理层( Agent layer) 3.3 设备层(Instrumentation ...

最新文章

  1. 使用TensorRT集成推理inference
  2. linux用户空间 限制吗,在Linux中限制用户空间
  3. 干货丨从基础知识到实际应用,一文了解「机器学习非凸优化技术」
  4. LFU的多种实现方式,从简单到复杂,新手必看
  5. 【开发环境】安装 Visual Studio Community 2013 版本 ( 安装软件 | 通过 GitHub 账号登录软件 | 启动软件 | 安装中文语言包 )
  6. 大话设计模式读书笔记11----建造者模式(Builder)
  7. 图像处理之特征描述与匹配
  8. Oracle浅谈第六回
  9. 客服系统微服务架构的演化
  10. Atitit common codec algo 常见编码算法 目录 1. 分类 1 2. BinaryEncoders 2 2.1. Base64 bin2hex etc 2 2.2. bin2h
  11. 【原译】一个可定制的WPF任务对话框
  12. 学习笔记|Pytorch使用教程22(hook函数与CAM可视化)
  13. 计算机信息检索自考知识点,计算机信息检索02139自考资料.docx
  14. 计算机图片照片查看器为何打不开,电脑看相片时照片查看器打不开怎么办
  15. Ubuntu-Chrome 更新Flash插件
  16. 拼多多砍价背后的逻辑
  17. linux系统有哪些
  18. photoshop从入门到精通全套视频
  19. 机器学习中特征选择概述
  20. CSS3 弹性布局 flex 项目属性

热门文章

  1. z=z(x,y)中面积积分和方向余弦
  2. centos 安装并使用rar解压压缩文件
  3. 地图上如何量方位角_正距方位图是怎么画出来的?应该怎么看?有什么特点?...
  4. ZuulException: Forwarding error java.net.UnknownHostException: DESKTOP-QBA1AHC:
  5. 中国未来只有三种人:资源者、配置者、投资人
  6. 换肤 技术 (转载)
  7. ubuntu16.04安装rtems
  8. 网上预约 php,php65高校体育场地网上预约使用系统
  9. 网络基础——牛客网刷题第四波
  10. GitHub构建Maven依赖仓库