什么是JMX
Wiki解释:JMX(Java Management Extensions,即Java管理扩展)是一个为应用程序、设备、系统等植入管理功能的框架。JMX可以跨越一系列异构操作系统平台、系统体系结构和网络传输协议,灵活的开发无缝集成的系统、网络和服务管理应用。
可以简单理解JMX是java的一套管理框架,coders都遵循这个框架,实现对代码应用的:
- 监控
- 管理
架构
JMX的结构一共分为三层:
1、基础层:主要是MBean,被管理的资源。分为四种,详情参考【2】,常用需要关注的是两种:
- standard MBean 这种类型的MBean最简单,它能管理的资源(包括属性,方法,时间)必须定义在接口中,然后MBean必须实现这个接口。它的命名也必须遵循一定的规范,例如我们的MBean为Hello,则接口必须为HelloMBean。
- dynamic MBean 必须实现javax.management.DynamicMBean接口,所有的属性,方法都在运行时定义
2、适配层:MBeanServer,主要是提供对资源的注册和管理。
3、接入层:Connector,提供远程访问的入口,参考【4】。
Show me the code
hellow world
以下代码实现简单的JMX demo
文件结构
1 | ├── HelloWorld.java |
1 | /** |
1 | /** |
1 | /** |
其中了:
- Probe Level:创建了HelloWorldMBean 实例mbean
- Agent Level:创建了MBeanServer 实例mbs
- Remote Management Level: 创建了JMXServiceURL,绑定到本地1099 rmi,关联到MBeanServer mbs
Jconsole
JConsole是基于JMX的可视化监视、管理工具。
通过jconsole 连接localhost:1099
ObjectName("test:type=HelloWorld")
为我们定义的HelloWorldMBean的对象mbsname,ObjectName格式参考【3】。私有属性Name 和非构造函数、属性赋值函数都可以进行管理。
可见不有只是test mbean对象,还有其他默认的mbean对象实例。
小结
本文简单介绍了jmx框架及demo代码,是jmx安全的基础。mbean暴露函数的调用是jmx主要的安全问题,后面文章再细谈。
参考
- [1] JMX超详细解读
- [2] 如何入侵基于RMI的JMX服务
- [3] Class ObjectName
- [4] JMX学习笔记(四) JMX RMI
- [5] 【JMX】—–JMX概述