微内核源自操作系统设计,例如“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是其一种实现。