<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
    主站蜘蛛池模板: 亚洲国产AV无码专区亚洲AV | 男女午夜24式免费视频 | 四虎在线免费播放| 99re免费在线视频| 韩国免费A级毛片久久| 在线播放亚洲精品| 亚洲日韩一区精品射精| 亚洲日产2021三区| 亚洲国产精品久久66| 亚洲午夜福利在线观看| 亚洲国产电影av在线网址| 日本特黄特黄刺激大片免费| 国产精品1024永久免费视频| 99久久免费看国产精品| 成人电影在线免费观看| 91成人免费福利网站在线| 一级毛片免费视频网站| 欧亚一级毛片免费看| 小说专区亚洲春色校园| 亚洲AV日韩AV永久无码色欲| 亚洲一卡2卡三卡4卡无卡下载| 亚洲国产精品久久久久秋霞影院| 久久久久亚洲精品成人网小说| 国产精品亚洲片在线观看不卡| 久久精品国产亚洲Aⅴ蜜臀色欲| 亚洲?V无码成人精品区日韩| 国产午夜免费秋霞影院| 日本特黄a级高清免费大片| 无码国模国产在线观看免费| 日韩在线视频免费看| 日韩精品视频免费网址| 国产gav成人免费播放视频| 国产一区二区三区在线免费| 免费一区二区视频| 亚洲成a人片在线播放| 亚洲男人第一无码aⅴ网站| 亚洲精品成a人在线观看| 国产成人精品曰本亚洲79ren| 国产精品亚洲精品日韩已方 | 一级毛片不卡免费看老司机 | 国产亚洲成AV人片在线观黄桃|