微核心源自作業系統設計,例如“Linus vs. Tanenbaum微核心論戰”。就像許多程式設計語言、架構從作業系統設計中借鑒技術一樣,JBoss、Spring、OSGi中也有微核心的概念。
micro kernel就是為了實現外掛程式化plugin,實現模組化、可插拔等特性。微核心架構負責管理plugin,它只提供類似這種管理功能的最小功能集。其他的功能特性由plugin去完成。
下圖顯示了JBoss中使用JMX(Java Management Extension)技術,作為組件插入的匯流排(Bus,也可稱為integration spine)。其中組件實現為MBean Service由JBoss載入管理。
一、JMX
JMX是從java中管理、監控各種軟體、硬體組件的標準。進一步的,JMX致力於對現存各種管理標準的整合。
JMX的介面定義在javax.management包下。
JMX模型分為三層;
1、Instrumentaion:即被管資源。
本質上可以是任何東西,例如application、service、device。
該層也定義了通知機制,以允許MBean與其所在環境進行通訊,例如屬性改變通知、狀態變化通知等等。
2、Agents:Instrumentation層被管對象的控制器controller
3、Distributed services:管理應用程式可以與agent和agent管理的對象互動的機制
二、JMX的MBean
一個MBean是實現了JMX中定義的MBean介面、並遵從相關設計模式的java對象。被管資源經由MBean暴露了必要的資訊和操作,可供管理應用存取控制。
MBean的管理介面包括四個方面:
1、可通過名字訪問的屬性attribute
2、可被調用的操作operation或功能function
3、可發送的通知notification或事件event
4、MBean對應java類的構造器
JMX定義了4中MBean:
1、standard mbean
遵循java bean命名規範的java類(。。)
2、dynamic mbean
實現了javax.management.DynamicMBean介面。它在運行時暴露其管理介面,已提供最大的靈活性。JBoss針對被管組件直到運行時才知曉的情況使用dynamic mbean。
3、open mbean
擴充自dynamic mbean。它依賴於基礎的、自描述的、方便使用的資料類型,以滿足通用管理性。
4、model mbean
擴充自dynamic mbean,實現了javax.management.modelmbean.ModelMBean介面,提供預設的行為用以簡化實現。JBoss中的XMBean是其一種實現。