JMX in action第一篇

一。监控能够作的事java

1,监测平台和硬件的健康性数据库

2,在应用层面上配置资源  (譬如数据库过载,能够手动调节链接数)服务器

3,收集应用统计数据架构

4,调试选项,更改日志级别等app

5,监视服务器的性能性能

实现方案:JMX编码

二,基本jmx条目spa

1,可管理的资源代理

    包括任意的应用,设备或其余java能够调用包装的实体调试

2.MBean

Managed bean:知足jmx规范,具备特定名称和继承规范的java类

jmx包含3种bean:标准,动态,模版

MBean都驻扎在一个叫MBean Server的地方

3.MBean Server

管理一组MBean的java类,是jmx管理环境中的核心,使用注册的方式来查找Mbeans,

而且对注册的MBean暴露管理接口,提供方法来查找MBean

4.Jmx agent

提供一系列服务来管理MBean的一个java进程,是MBean Server的容器

agent能够有一组适配器和链接器来让远程不一样的客户端使用本身,适配器能够映射协议,譬如http,snmp

链接器能够把agent暴露出来让客户端经过rmi,jini链接

5.协议适配器和链接器 Protocol adaptor and connector

存在与agent中,经过协议或链接暴露agent

6.管理应用 Management application

经过接口链接agent,管理其中MBean的应用程序

7通知 Notification

Mbean和MBean Server包装的事件,报警,或通常通知

8.设备 Instrumentation

定义如何实现管理资源的规范

三,jmx架构

层    描述
分布服务层 包含管理应用与代理层通讯的各类组件
代理层 包含代理和MBean服务器
设备层 包含表明可管理资源的MBean

四。编码规则 for all MBeans

1,全部的MBean必须是具体的java类,便可以实例化非抽象的类

2,要有public的构造器

3,全部的MBean要么实现本身的MBean接口,要么实现DynamicMBean接口,接口要以MBean结尾

4.标准的接口和实现必需要在同一个包路径下,只能实现单个接口,多个接口实现不容许,可是接口继承后类再实现是能够的。

标准MBean就是实现了本身MBean接口的MBean(好拗口)

全部的MBean还能够实现NotificationBroadcaster接口,这个接口能够发布通知给监听者

五,标准MBean

1.接口组成

  • public级别的构造器constructor  

        MBean要被JMX管理,能够动态生成MBean,所以必需要有公开constructor

  • 属性(Attributes)

        经过声明getter  setter方法来暴露属性,全部以get(无参)  set开头的方法被认为是属性的一部分

setter方法不能重载,属性不一致jmx认为是无效的

  • 操做(Operations)

        非set get开头的方法,用来实现某些功能

  • 通知(Notifications)

        经过实现NotificationBroadcaster接口发布通知

2.接口实现与类继承问题

I.单继承无接口

    PrinterMBean<interface>    

              ⬆️                                                          

          Printer <class>          ⬅️                CopiedPrinter<class>      

CopiedPrinter具备PrinterMBean的相关方法和属性

II.继承与接口

    PrinterMBean<interface>        CopiedPrinterMBean<interface>

              ⬆️                                                          ⬆️

          Printer <class>          ⬅️                CopiedPrinter<class>      

因为MBean规范规定只能实现一个接口,MBean agent会查找最近的interface,所以CopiedPrinter只有CopiedPrinterMBean接口定义的相关属性和方法

可是接口继承是没有问题的,若是CopiedPrinterMBean继承了PrinterMBean的话,CopiedPrinter就会有这两个接口相关的属性和方法,见III.

III.接口继承

    PrinterMBean<interface>   ⬅️     CopiedPrinterMBean<interface>

              ⬆️                                                          ⬆️

          Printer <class>          ⬅️                CopiedPrinter<class>      

CopiedPrinter具备PrinterMBean相关属性和方法,可是这些并非从Printer来的,而是从接口CopiedPrinterMBean接口继承来的

IV.接口继承非MBean接口

    Printer<interface>   ⬅️     CopiedPrinterMBean<interface>

                                                                        ⬆️

                                                       CopiedPrinter<class>       

 CopiedPrinter行为是由两个接口决定的,CopiedPrinterMBean继承了全部的方法

相关文章
相关标签/搜索