<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    關(guān) 注 開(kāi) 源 (王鋒的Blog)

    Spring Hibernate Jboss Tomcat SCA OSGI

    Tuscany SCA啟動(dòng)過(guò)程分析

    Tuscany作為SCA Spec1.0實(shí)現(xiàn),現(xiàn)在已接近Release 1.0的尾聲,在近期將發(fā)布。其結(jié)構(gòu)相對(duì)7月份發(fā)布的0.91版本進(jìn)行了較大的調(diào)整,優(yōu)化了代碼的結(jié)構(gòu)并且增加了部分新功能。本文將針對(duì)其最新代碼,通過(guò)對(duì)其啟動(dòng)過(guò)程進(jìn)行分析,來(lái)了解Tuscany中對(duì)資源的加載及模型組裝的處理。

    一、啟動(dòng)前準(zhǔn)備

    1、 擴(kuò)展點(diǎn)注冊(cè)器實(shí)例化

    Tuscany的實(shí)現(xiàn)采用了擴(kuò)展點(diǎn)機(jī)制,所有的可重用對(duì)象都會(huì)在其中注冊(cè),因此把擴(kuò)展點(diǎn)注冊(cè)器作為參數(shù)來(lái)回傳遞,通過(guò)它可以從中拿到所有的已注冊(cè)對(duì)象。

    2、 注冊(cè)對(duì)象到擴(kuò)展點(diǎn)注冊(cè)器

    Tuscany的現(xiàn)有版本與以前版本進(jìn)行了較大改進(jìn),由原來(lái)在代碼中指定改為了由配置文件中指定,加載的方式也改為了Lazy Loading,在從注冊(cè)器中取得對(duì)象時(shí)加載配置文件,然后把實(shí)例放入注冊(cè)器的集合中,以便下次直接從中取得需要的對(duì)象,不再解析配置文件。

    最先注冊(cè)的對(duì)象有:WorkScheduler,ModelFactoryExtensionPoint,ContextFactoryExtensionPoint,ProxyFactory,InterfaceContractMapper。

    3、 加載ModuleActivator

    遍歷所有定義的ModuleActivator文件,解析其中的內(nèi)容作為ModuleActivator接口的實(shí)現(xiàn),然后執(zhí)行其中的start方法。

    ModuleActivator現(xiàn)有接口已經(jīng)去掉了擴(kuò)展點(diǎn)注冊(cè)的方法。

    4、 解析策略配置文件definitions.xml

    策略配置文件配置了針對(duì)binding,implementation所使用的策略,其使用方式可參考其SCA spec中的 Policy Framework一節(jié)。

    二、資源加載

    Tuscany對(duì)資源的劃分是以Contribution為單位的,Contribution作為一組資源的集合,包含了SCA的配置文件如*.composite,*.componentType,sca-contribution.xml,以及用到的一些附加文件如*.wsdl等。

    現(xiàn)在說(shuō)明一下Tuscany對(duì)單個(gè)Contribution的資源加載處理。

    1、 資源查找

    在Tuscany中定義了兩種Processor,Dir Processor和Jar Processor,分別對(duì)目錄及Jar中資源進(jìn)行遍歷,返回其中包含的資源列表。

    2、 資源解析

    針對(duì)Contribution中的每一個(gè)資源都會(huì)生成DeployedArtifact對(duì)象,在其屬性Model中保存著資源的元模型數(shù)據(jù)。

    每個(gè)資源解析成元模型主要是依據(jù)針對(duì)每一資源有一對(duì)應(yīng)的Processor,在其中包含有Read方法負(fù)責(zé)解析提供URL對(duì)應(yīng)的資源。已提供的解析器有針對(duì)*.composite,*.componentType,*.wsdl,*.xsd類型文件的解析。同時(shí)針對(duì)文件中的不同結(jié)點(diǎn)也定義了相應(yīng)的解析器,如對(duì)composite,reference,property,service等結(jié)點(diǎn)的解析。Tuscany中采用流XStream方式解析。

    3、 可發(fā)布資源解析

    每一個(gè)Contribution中都可以定義對(duì)外發(fā)布的資源列表,通過(guò)META-INF/sca-contribution.xml進(jìn)行定義。同時(shí),在其中也可以定義對(duì)外引用和對(duì)外暴露的服務(wù)。其Schema格式如下:

    示例:

    Contribution的結(jié)構(gòu)圖如下:

    三、資源組裝

    針對(duì)每個(gè)Contribution中的可發(fā)布資源,如果類型為composite,則進(jìn)行各個(gè)composite,component之間的關(guān)聯(lián)(Wire)。

    組裝的過(guò)程分為三個(gè)步驟:build, activate, start。

    1、 build過(guò)程

    build主要完成Composite之間的關(guān)聯(lián),包括compoiste文件中Include元素的解析,Component實(shí)現(xiàn)為Compoiste的處理,以及Service,binding,Reference的處理等等。

    2、 activate過(guò)程

    主要完成component的ImplementationProvider的賦值,同時(shí)針對(duì)component中Service的binding進(jìn)行設(shè)置BindingProvider,并針對(duì)每一Service,設(shè)置其RuntimeWire。

    3、 start過(guò)程

    主要完成Component對(duì)應(yīng)的ServiceBindingProvider,ImplementationProvider,ScopeContainer完成啟動(dòng),通過(guò)執(zhí)行方法start完成。

    形成RuntimeWire過(guò)程圖如下:

    posted on 2007-08-22 15:51 wangfeng 閱讀(1537) 評(píng)論(0)  編輯  收藏


    只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 国产精品麻豆免费版| 亚洲人成精品久久久久| 美女视频黄a视频全免费网站色| 亚洲一区二区精品视频| 99热这里有免费国产精品| 亚洲 日韩 色 图网站| 亚洲人成人网站在线观看| 30岁的女人韩剧免费观看| 美女免费视频一区二区三区| 亚洲国产精品无码一线岛国| 精品熟女少妇AV免费观看| h视频在线免费观看| 亚洲日韩国产精品乱-久| 久久久久亚洲精品无码网址| 青青视频观看免费99| 久久国产一片免费观看| 亚洲AV色吊丝无码| 亚洲乱码一区二区三区在线观看| 我要看WWW免费看插插视频| 一个人免费观看视频在线中文 | 97性无码区免费| 一本一道dvd在线观看免费视频| 亚洲专区在线视频| 亚洲成a人片在线播放| AV无码免费永久在线观看| 好吊色永久免费视频大全| 亚洲精品无码高潮喷水A片软| 亚洲不卡av不卡一区二区| 男女交性永久免费视频播放| 最近中文字幕完整免费视频ww| 阿v免费在线观看| 亚洲欧洲另类春色校园网站| 国产AV无码专区亚洲AVJULIA| 亚洲?V无码成人精品区日韩| 无码日韩人妻av一区免费| 性色午夜视频免费男人的天堂 | 永久中文字幕免费视频网站| 亚洲成人免费在线观看| a级毛片免费在线观看| 三级片免费观看久久| 阿v免费在线观看|