一。監控能夠作的事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.接口組成
MBean要被JMX管理,能夠動態生成MBean,所以必需要有公開constructor
經過聲明getter setter方法來暴露屬性,全部以get(無參) set開頭的方法被認爲是屬性的一部分
setter方法不能重載,屬性不一致jmx認爲是無效的
非set get開頭的方法,用來實現某些功能
經過實現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繼承了全部的方法