JMX(Java Management Extension)学习

基本概念

JMX(Java Management Extensions)是一个为应用程序植入管理功能的框架。

JMX让程序有被管理的功能,例如你开发一个WEB网站,它是在24小时不间断运行,那么你肯定会对网站进行监控,如每天的UV、PV是多少;又或者在业务高峰的期间,你想对接口进行限流,就必须去修改接口并发的配置值。

JMX框架主要由以下几层构成:
- 探针层(Probe Level)/设备层(Instrumentation Level)
- 代理层(Agent Level)
- 远程管理层(Remote Management Level)

它们之间的关系如下图所示:

pic

需要通过JMX服务获得被管理对象信息的程序,就是通过远程管理层来与具体的MBean进行交互的。

分别介绍一下比较重要的一些概念:

  • MBean(Managed Bean)

通常是一个 Java 类,它提供接口可以使这个类具有可以被管理(能够成功注册到server上)的功能。它通常代表我们想要实际管理的一个程序,或者一个设备等等,这是我们用MBean的规范将管理对象封装了起来。

  • MBeanServer

是管理MBean的一个 Java 类,你需要向 MBeanServer 注册一个 MBean 后,这个 MBean 才会真正具备被管理的能力,MBeanServer 还提供了查询功能和注册监听器的功能,sun 提供的只是接口,不同的 JMX 实现中的 MBean server 实现也不同。

  • JMX Agent

Agent 是 MBean Server 的容器,主要为了管理一系列的 MBean,并且提供的一系列的服务,通常有MBean relationships, dynamically loading classes, simple monitoring services, timers。Agent 可以利用 Protocol adapters(例如 HTTP 和 SNMP)和 connectors(RMI 和Jini)使不同的客户端可以访问 MBean。

  • Protocol adapters 和 connectors

适配器和连接器主要使不同的协议和客户端可以使用这个 Agent,一个 Agent 中可以有多个 Protocol adapters 和 connectors,这样管理起 MBean 来就更方便了(有多种类型的客户端和协议可以操作 MBean)。注意,Protocol adapters 和 connectors 通常也是 MBean。

【JMX学习】1、jmx入门

JMX超详细解读

MBean的种类

  • standard MBean:需要定义MBean接口,接口中包含需要被管理的资源,并编写MBean接口的实现类。接口和实现类的命名必须满足一定规范,若实现类名为Classname,则接口的命名必须为ClassNameMBean。
  • dynamic MBean:必须实现javax.management.DynamicMBean接口,所有的属性,方法都在运行时定义。
  • open MBean:此MBean的规范还不完善,正在改进中
  • model MBean:与标准和动态MBean相比,你可以不用写MBean类,只需使用javax.management.modelmbean.RequiredModelMBean即可。RequiredModelMBean实现了ModelMBean接口,而ModelMBean扩展了DynamicMBean接口,因此与DynamicMBean相似,Model MBean的管理资源也是在运行时定义的。与DynamicMBean不同的是,DynamicMBean管理的资源一般定义在DynamicMBean中(运行时才决定管理那些资源),而model MBean管理的资源并不在MBean中,而是在外部(通常是一个类),只有在运行时,才通过set方法将其加入到model MBean中。

JMX学习笔记(一)-MBean

StandardMBean

从零开始玩转JMX(一)——简介和Standard MBean

JMX学习笔记(三):MXBean

MXBean相比MBean支持更复杂数据类型的类属性管理

DynamicBean

动态MBean:DynamicMBean

ModelMBean

从零开始玩转JMX(三)——Model MBean

JMX的实现方式

StandardMBean的使用方法

  1. 定义MBean接口
  2. 编写MBean接口实现类
  3. 创建MBeanServer类,并向server注册MBean类(server.registerMBean(实现类对象,ObjectName)) 【ObjectName取名是有规范的,格式为:“域名:name=MBean名称”,其中域名和MBean的名称可以任意取。这样定义后,就可以唯一标识我们定义的这个MBean的实现类了。】
  4. 为了查看实现状态,可以再加一个Thread.sleep(Long.MAX_VALUE),然后用JConsole工具查看。

JMX服务的访问方式

JMX服务可以有多种方式对其进行连接和使用,也有不同的展现方式,但内容都是相同的。

1.JDK自带工具JConsole(jdk/bin/jconsole.exe)

  • 首先连接JMX服务。

    JMX服务或者是本地提供,或者是远程提供,本地提供可以直接在jconsole的连接界面上显示,选中连接即可。远程提供的连接,则需要输入远程地址和端口号,并且如果设置了帐号密码还需要输入帐号密码,然后连接。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值