当前位置: 首页 > 工具软件 > JBossMC > 使用案例 >

JBoss MC

糜鸿风
2023-12-01

jbossMC kernel
一、事件机制
  Subject: org.jboss.kernel.spi.event.KernelEventEmitter
        org.jboss.kernel.spi.event.KernelEventListener
        org.jboss.kernel.spi.event.KernelEventFilter
        org.jboss.kernel.spi.event.KernelEventManager
  通过上面各类实现事件的产生、监听、过滤和协调管理

 命名机制
   为了将POJO变成用户可用的Service,需要一种命名机制,用户以名称方式获得POJO。
二、kernel系统组成
所有组成对象都是KernelObject,每个KernelObject都继承KernelEventEmitter;
具体包括:
1)KernelBus - 通向registry的线路,使得可以调用registry中命名了的组件
2)KernelConfig - 提供kernel配置选项,获得class info,创建KernalBus、KernelConfigurator、KernelController、KernelEventManager、KernelInitializer
、KernelRegistry、KernelMetaDataRepository以及DependencyBuilder
3)KernelConfigurator - 辅助controller创建和配置bean的工具类
4)KernelController - 核心组件,保证beans的配置和生命周期以正确的顺序被处理,包括依赖关系与类加载等内容
5)KernelEventManager - 事件协调者
6)KernelMetaDataRepository - beans的元数据仓库
7)Registry - 负责track命名beans,保证通过bus调用beans,根据依赖关系进行使用

Kernel- kernel服务的入口点,考虑了access 权限与config权限,对访问与配置进行安全检查。同时kernel中包含上面7个KernelObject

三、kernel 自举(bootstrap)
1)通过单例的KernelFactory获得Kernel实例
   1.1)获得config(从property,或者Systemproperty)
   1.2)new一个既没有config,亦没有initialized的Kernel
   1.3)setConfig
   1.4)setInitlizer
  1.5)返回Kernel
MC的环境涉及- aop, metadata元数据, class loading类加载, deployments部署, state management状态管理, lifecycle/dependcies生命周期/依赖关系管理, configuration配置, and management组件管理

四、反射模型reflection model
  在java.lang.reflect之上的抽象
  4.1 cache 不适用cache,反射可能成为性能瓶颈
  4.2 abstraction
  4.3 hide implementation 使用aop操作bytecode,隐藏不感兴趣的实现

五、jboss测试

六、部署
  BasicXMLDeployer - 解析xml文件(jboss-beans.xml),配置注册beans;解析获得的信息保存在KernelDeployment之中,具体每个bean信息存在于BeanMetaData之中。
 .xml--parse-->BeanMetaData; 多个BeanMetaData构成kernelDeployment;
 由KernelController对每一个BeanMetaData处理,根据BeanMetaData等信息构造KernelControllerContezt,并存放在deployment的map中,最后controller.install(context)
 1)VFS
 2)识别部署结构
   这一步找到dd,bytecode,侦测“嵌套部署”。使用VFS表示部署,需要首先创建VFSDeployment。
     VirtualFile root = VFS.getRoot(deploymentURL);    
     VFSDeploymentFactory deploymentFactory = VFSDeploymentFactory.getInstance();
    Deployment deployment = deploymentFactory.createVFSDeployment(root);
  部署框架使用StructureDeployer部署器,决定部署结构。
  部署结构包括xml文件结构、JAR结构(jar,sar,war,ear,rar);嵌套部署
 
 3)创建部署上下文(Deployment Context)
    确定deployment结构后,下一步是创建部署上下文,每一个deployment,不论是top-level还是嵌套的,都要对应一个部署上下文。
    记录:
       。the location of any deployment descriptors - the metadata path
    。the location of any classes - the classpath
    。the relative path to the top-level deployment - the relative path
       。the deployment name
     。the order it should be deployed in relative to other deployments - the relative order
    。a list of deployment types that it represents (including nested deployments) - the types
    。the state of the deployment - whether it is deployed or not
    。the deployment class loader
    。the deployment resource loader
    。dependencies on other deployments or runtime components
    。references to any components that it deploys - POJOs, MBeans etc...
    。references to any nested (child) deployments or the parent deployment
  3.1运行时部署组件(POJO、OSGi,JMX)
  3.2部署依赖

 类似资料:

相关阅读

相关文章

相关问答