JBoss JMX 框架

阅读更多
JBoss4采用JMX作为它的核心框架,JMX构成了一个服务总线体系,所有对服务的调用都通过此总线进行分发。
 
MbeanServer
下面是一个MbeanServer的关系图



 

从图中可以看出,MBeanServer持有一个MBean注册表,所有的MBean都必须登记到注册表中,
 
一个服务操作的执行过程
下图是一个服务操作的执行序列图
 

 
XMBean
XMBean是Xml MBean的缩写,即通过xml文件描述的MBean,下面是jboss-service.xml中JNDIView的mbean定义.
  
     name="jboss:service=JNDIView"
     xmbean-dd="resource:xmdesc/JNDIView-xmbean.xml">
     jboss:service=HAJNDI
  
其中: code指定服务组件的类名称或MBean的类名称;
name指定服务组件在注册表中的名称,必须是唯一的;
xmbean-dd指定mbean的xml描述文件;
 
下表列出了xmbean-dd和interface不同取值组合下mbean和service的实际类型;
mbean 类型
service 类型
xmbean-dd
interface
xmbean 定义
StandardMBean
code指定
null
not null
not used
code指定
 
null
null
not used
XMBean
code指定
length=0
not used
内置
XMBean
code指定
length>0
not used
xml文件
 
ServiceCreator根据mbean节点创建xmbean,然后登记到registry中。
 
----- BasicMBeanRegistry.java -----
 
public ObjectInstance registerMBean(Object object,
ObjectName name, Map valueMap) {
   // 1.取得MBeanInvoker
   MBeanCapability mbcap = MBeanCapability.of(object.getClass());
    int mbeanType = mbcap.getMBeanType();
 if (mbeanType == MBeanCapability.STANDARD_MBEAN) {
      invoker = new XMBean(object, XMBeanConstants.STANDARD_MBEAN);
 } else if (object instanceof MBeanInvoker) {
      invoker = (MBeanInvoker)object;
 } else if (mbeanType == MBeanCapability.DYNAMIC_MBEAN) {
      if( object instanceof RequiredModelMBean )
          invoker = new RequiredModelMBeanInvoker((DynamicMBean)object);
       else
         invoker = new RawDynamicInvoker((DynamicMBean)object);
 }
 
// 2.创建MBeanEntry并登记
MBeanEntry entry = new MBeanEntry(regName, invoker, object, valueMap);
add(entry);
 
// ......
}
  • 大小: 17.8 KB
  • JBoss JMX 框架_第1张图片
  • 大小: 18.4 KB
  • 查看图片附件

你可能感兴趣的:(框架,JBoss,XML)