JMX : MXBean
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相关推荐
- 垃圾收集算法,垃圾收集器_确定活动的热点垃圾收集器
垃圾收集算法,垃圾收集器 StackOverflow问题查找正在运行哪种类型的垃圾收集 器,jvm的默认垃圾收集器 , 如何通过查看gc日志来查看正在运行的垃圾收集器? ,以及如何知道HotSpot ...
- 确定活动的热点垃圾收集器
StackOverflow问题查找正在运行哪种类型的垃圾收集 器,jvm的默认垃圾收集器 , 如何通过查看gc日志来查看正在运行的垃圾收集器? ,以及如何知道HotSpot jvm的当前GC策略? 和 ...
- JMX自定义MXBean
MXBean接口 一个MBean由一个MBean接口(该MBean接口列出了所有被暴露的属性和操作对应的方法)和一个class(这 个class实现了这个MBean接口并提供被监测资源的功能)组成. ...
- jmx使用应该注意的基本规范
1.标准MBean 名称必需是在要监控的类名后面加上"MBean ". 2.监控的类和MBean 接口必需在同一包下,也可以理解为注册的接口名字必须以MBean结尾,接口实现类比接 ...
- spring源码分析之spring jmx
JMX架构定义: https://docs.oracle.com/javase/8/docs/technotes/guides/jmx/overview/architecture.html Archi ...
- JMX 与系统管理--转
前言 在 Java 程序的运行过程中,对 JVM 和系统的监测一直是 Java 开发人员在开发过程所需要的.一直以来,Java 开发人员必须通过一些底层的 JVM API,比如 JVMPI 和 JVM ...
- JMX和Spring –第3部分
本文是本系列的最后一篇. 看一下第1 部分和第2部分 . 在本系列的最后一篇文章中,我将展示如何在JDK中使用本机JMX支持来实现一种通知机制,该机制可以在HEAP内存超过特定阈值时向侦听器发出警报. ...
- 【jmx】JMX最佳实践与详解
1.概述 转载:https://www.iteye.com/blog/shift-alt-ctrl-2404103 2.JMX最佳实践 1.Object Names(对象命名) 每个JMX MBean ...
- 【JMX】-----JMX概述
文章目录 1.简介 2.JMX基本术语 3.JMX架构 3.1 分布层(Distributed layer) 3.2 代理层( Agent layer) 3.3 设备层(Instrumentation ...
最新文章
- 使用TensorRT集成推理inference
- linux用户空间 限制吗,在Linux中限制用户空间
- 干货丨从基础知识到实际应用,一文了解「机器学习非凸优化技术」
- LFU的多种实现方式,从简单到复杂,新手必看
- 【开发环境】安装 Visual Studio Community 2013 版本 ( 安装软件 | 通过 GitHub 账号登录软件 | 启动软件 | 安装中文语言包 )
- 大话设计模式读书笔记11----建造者模式(Builder)
- 图像处理之特征描述与匹配
- Oracle浅谈第六回
- 客服系统微服务架构的演化
- Atitit common codec algo 常见编码算法 目录 1. 分类	1 2. BinaryEncoders	2 2.1. Base64 bin2hex etc	2 2.2. bin2h
- 【原译】一个可定制的WPF任务对话框
- 学习笔记|Pytorch使用教程22(hook函数与CAM可视化)
- 计算机信息检索自考知识点,计算机信息检索02139自考资料.docx
- 计算机图片照片查看器为何打不开,电脑看相片时照片查看器打不开怎么办
- Ubuntu-Chrome 更新Flash插件
- 拼多多砍价背后的逻辑
- linux系统有哪些
- photoshop从入门到精通全套视频
- 机器学习中特征选择概述
- CSS3 弹性布局 flex 项目属性
热门文章
- z=z(x,y)中面积积分和方向余弦
- centos 安装并使用rar解压压缩文件
- 地图上如何量方位角_正距方位图是怎么画出来的?应该怎么看?有什么特点?...
- ZuulException: Forwarding error java.net.UnknownHostException: DESKTOP-QBA1AHC:
- 中国未来只有三种人:资源者、配置者、投资人
- 换肤 技术 (转载)
- ubuntu16.04安装rtems
- 网上预约 php,php65高校体育场地网上预约使用系统
- 网络基础——牛客网刷题第四波
- GitHub构建Maven依赖仓库