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

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

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

    gembin

    OSGi, Eclipse Equinox, ECF, Virgo, Gemini, Apache Felix, Karaf, Aires, Camel, Eclipse RCP

    HBase, Hadoop, ZooKeeper, Cassandra

    Flex4, AS3, Swiz framework, GraniteDS, BlazeDS etc.

    There is nothing that software can't fix. Unfortunately, there is also nothing that software can't completely fuck up. That gap is called talent.

    About Me

     

    OSGi簡介

    OSGi簡介

    OSGi: Open Services Gateway Initiative,它的初衷是建立一個開放性的平臺,通過這個平臺可以很容易的發布可管理的服務和應用到本地網絡和設備,以達到設備管理的目的。JSR232OSGi有著密切的聯系(其實是完全一樣的),JSR232就是OSGiFramework規范加上OSGi Mobile的規范。OSGi Framework主要解決底層Runtime Model問題,而OSGi Mobile是基于OSGi Framework之上的關于OMA DM的實現。

    OSGi目前的應用越來越廣泛,特別是OSGi Framework。像Eclipse就是基于OSGi Framework之上擴展出來的。而且,當前很多企業級的架構,例如Spring等等都把自己的Runtime Model建立在OSGi Framework之上。接下來,我將就OSGi Framework最神秘最吸引人(自認為)的Class Loading架構進行闡述。

    2.      Class Loading Architecture

    OSGi Framework中,Bundle是模塊化管理的單元,所有的應用和資源都必須以Bundle作為載體。每個Bundle都有自己的Class Loader,不同Bundle之間(在同一個VM中)可以通過ImportExport機制共享或者隱藏PackageClass Loader建立一種Loading Class的代理模型,來實現上面所說的共享或隱藏機制:

    Class Loader可以從以下幾個方面來加載ClassesResources

    ·        Boot class path 主要包括java.*和實現的Packages

    ·        Framework class path Framework其實也是Bundle,只不過叫System Bundle,那么它也會有自己的class loader

    ·        Bundle Space 當然就是Bundle自己啦以及一些附加的資源,例如Fragments

     

     

    如果給定一個Bundle Class Loader,那么這個Class Loader所能訪問的classes包括(這就是所謂的Class Space):

    ·        Parent class loader所加載的classes,通常是java.*之類的classes

    ·        Imported packages

    ·        Required bundles

    ·        Bundle 自身的Classpath

    ·        Fragment

     

    同一個Class Space不能存在這種情況:兩個類擁有相同的Qualified NameName Space + Simple Class Name)。而不同的Class Space則可以存在這種情況,即兩個類擁有相同的Qualified Name。這使得,在同一個VM中,可以同時存在一個類的不同版本。

     

    3.      Runtime Class Loading

    當一個Bundle Class Loader加載一個classresource時,它的步驟如下:

    1. 如果這個被加載的class或資源包含在Java.*包中,那么這個加載請求就會被傳遞給Parent Class Loader;否則,進入下一步。如果請求被傳遞給Parent Class Loader,而Parent Class Loader也沒找到相應的資源,那么加載過程以失敗結束。
    2. 如果包含被加載的classresourcepackage被定義在Boot Delegation表中時(org.osgi.framework.bootdelegation),那么這個請求將被傳遞到Parent Class Loader。如果找到相應的classresource,那么加載過程以成功結束。
    3. 如果這個被加載的classresource包含在Import-Package中,那么這個請求將被傳遞到Export這個PackageBundle Class Loader(此時,這個class或資源可能已經被加載到VM中了)。否則進入下一步。
    4. 如果這個被加載的classresource包含在Required-Bundle中,那么這個請求將被傳遞給這個Required-Bundle Class Loader。如果沒有找到,那么進入下一步。
    5. 在此Bundle自身的class path中尋找被加載的class或資源。如果沒有找到,那么進入下一步。
    6. 在此BundleFragmentclass path中尋找,查詢按FragmentBundle ID的順序。如果沒有找到,那么進入下一步。
    7. 如果這個被加載的classresource包含在Import-PackageRequired-Bundle中(但是到這一步還是沒有找到),那么加載過程以失敗結束。否則,進入下一步。
    8. 如果這個被加載的classresource包含在DynamicImport-Package中,那么這個Dynamic Import將被建立。如果這個Dynamic Import不能成功建立(主要看依賴條件是否被滿足),那么加載過程以失敗結束。
    9. 如果Dynamic Import成功建立,那么這個請求將被傳遞給Export這個packageBundle Class Loader。如果在這種情況下,也沒有找到classresource,那么加載過程以失敗結束。

     

    以下是具體的流程圖(來源于OSGi core specification R4):

    v

    posted on 2008-04-17 18:19 gembin 閱讀(1075) 評論(0)  編輯  收藏 所屬分類: OSGi

    導航

    統計

    常用鏈接

    留言簿(6)

    隨筆分類(440)

    隨筆檔案(378)

    文章檔案(6)

    新聞檔案(1)

    相冊

    收藏夾(9)

    Adobe

    Android

    AS3

    Blog-Links

    Build

    Design Pattern

    Eclipse

    Favorite Links

    Flickr

    Game Dev

    HBase

    Identity Management

    IT resources

    JEE

    Language

    OpenID

    OSGi

    SOA

    Version Control

    最新隨筆

    搜索

    積分與排名

    最新評論

    閱讀排行榜

    評論排行榜

    free counters
    主站蜘蛛池模板: 国产成人亚洲精品91专区高清| 成人一a毛片免费视频| 国产精品手机在线亚洲| 久久亚洲精品无码aⅴ大香 | 亚洲蜜芽在线精品一区| 亚洲国产日韩成人综合天堂| 午夜爱爱免费视频| 黄色永久免费网站| 久久不见久久见免费视频7| 成人免费ā片在线观看| 成年大片免费视频播放一级| 亚洲国产成人久久精品软件 | 成人性生交大片免费看中文| 亚洲av无码av在线播放| 中文字幕亚洲男人的天堂网络| 777亚洲精品乱码久久久久久 | 亚洲黑人嫩小videos| 久久九九亚洲精品| 相泽亚洲一区中文字幕| 亚洲高清免费视频| 免费午夜爽爽爽WWW视频十八禁 | 国产亚洲视频在线观看| 亚洲男人的天堂网站| 亚洲中文字幕一区精品自拍| 国产精品亚洲精品青青青| 亚洲大香伊人蕉在人依线| 亚洲精品亚洲人成在线麻豆| 99ri精品国产亚洲| 亚洲视频在线观看不卡| 亚洲春色另类小说| 亚洲一线产区二线产区精华| 亚洲av日韩av无码av| 国产精品亚洲综合久久| 亚洲精品蜜夜内射| 国产精品成人亚洲| 一级美国片免费看| a级毛片毛片免费观看久潮| 国产免费无码一区二区| 精品一区二区三区无码免费视频 | 亚洲国产日韩在线| 亚洲日韩精品国产3区|