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

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

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

    關 注 開 源 (王鋒的Blog)

    Spring Hibernate Jboss Tomcat SCA OSGI

    Tuscany SCA啟動過程分析

    Tuscany作為SCA Spec1.0實現,現在已接近Release 1.0的尾聲,在近期將發布。其結構相對7月份發布的0.91版本進行了較大的調整,優化了代碼的結構并且增加了部分新功能。本文將針對其最新代碼,通過對其啟動過程進行分析,來了解Tuscany中對資源的加載及模型組裝的處理。

    一、啟動前準備

    1、 擴展點注冊器實例化

    Tuscany的實現采用了擴展點機制,所有的可重用對象都會在其中注冊,因此把擴展點注冊器作為參數來回傳遞,通過它可以從中拿到所有的已注冊對象。

    2、 注冊對象到擴展點注冊器

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

    最先注冊的對象有:WorkScheduler,ModelFactoryExtensionPoint,ContextFactoryExtensionPoint,ProxyFactory,InterfaceContractMapper。

    3、 加載ModuleActivator

    遍歷所有定義的ModuleActivator文件,解析其中的內容作為ModuleActivator接口的實現,然后執行其中的start方法。

    ModuleActivator現有接口已經去掉了擴展點注冊的方法。

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

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

    二、資源加載

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

    現在說明一下Tuscany對單個Contribution的資源加載處理。

    1、 資源查找

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

    2、 資源解析

    針對Contribution中的每一個資源都會生成DeployedArtifact對象,在其屬性Model中保存著資源的元模型數據。

    每個資源解析成元模型主要是依據針對每一資源有一對應的Processor,在其中包含有Read方法負責解析提供URL對應的資源。已提供的解析器有針對*.composite,*.componentType,*.wsdl,*.xsd類型文件的解析。同時針對文件中的不同結點也定義了相應的解析器,如對composite,reference,property,service等結點的解析。Tuscany中采用流XStream方式解析。

    3、 可發布資源解析

    每一個Contribution中都可以定義對外發布的資源列表,通過META-INF/sca-contribution.xml進行定義。同時,在其中也可以定義對外引用和對外暴露的服務。其Schema格式如下:

    示例:

    Contribution的結構圖如下:

    三、資源組裝

    針對每個Contribution中的可發布資源,如果類型為composite,則進行各個composite,component之間的關聯(Wire)。

    組裝的過程分為三個步驟:build, activate, start。

    1、 build過程

    build主要完成Composite之間的關聯,包括compoiste文件中Include元素的解析,Component實現為Compoiste的處理,以及Service,binding,Reference的處理等等。

    2、 activate過程

    主要完成component的ImplementationProvider的賦值,同時針對component中Service的binding進行設置BindingProvider,并針對每一Service,設置其RuntimeWire。

    3、 start過程

    主要完成Component對應的ServiceBindingProvider,ImplementationProvider,ScopeContainer完成啟動,通過執行方法start完成。

    形成RuntimeWire過程圖如下:

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


    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 久久av无码专区亚洲av桃花岛| 自拍偷自拍亚洲精品第1页 | 国产日韩久久免费影院| 女人被男人桶得好爽免费视频 | 在线观看亚洲AV日韩AV| 91香蕉视频免费| 97se亚洲国产综合自在线| 午夜福利不卡片在线播放免费| 亚洲高清在线mv| 国产人成免费视频网站| 亚洲综合校园春色| 日韩伦理片电影在线免费观看| 亚洲精品理论电影在线观看| 国产成人3p视频免费观看| 日本黄页网址在线看免费不卡| 亚洲精品和日本精品| 国产高潮流白浆喷水免费A片 | 亚洲国产精品综合久久久| 69国产精品视频免费| 亚洲综合色7777情网站777| 免费无码AV片在线观看软件| 亚洲一区二区三区写真| 又黄又爽无遮挡免费视频| 中文字幕在线成人免费看| 亚洲av无码片在线播放| 日本XXX黄区免费看| 亚洲精华液一二三产区| 亚洲精品国产精品乱码不卞 | 美女扒开屁股让男人桶爽免费| 一级毛片直播亚洲| 中文无码成人免费视频在线观看| 久久久久亚洲AV无码网站| 最近的免费中文字幕视频| 一区二区三区免费电影| 亚洲精品人成在线观看| 成年女人看片免费视频播放器| 四虎一区二区成人免费影院网址| 亚洲VA中文字幕无码毛片 | vvvv99日韩精品亚洲| 国内精品免费视频精选在线观看| 亚洲成人黄色在线|