JBoss JMX 框架

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



 

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

 
XMBean
XMBean是Xml MBean的缩写,即通过xml文件描述的MBean,下面是jboss-service.xml中JNDIView的mbean定义.
   <mbean code="org.jboss.naming.JNDIView"
     name="jboss:service=JNDIView"
     xmbean-dd="resource:xmdesc/JNDIView-xmbean.xml">
     <attribute name="HANamingService">jboss:service=HAJNDI</attribute>
   </mbean>
其中: 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);
 
// ......
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值