<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
    主站蜘蛛池模板: 五月婷婷综合免费| 精品免费久久久久国产一区 | 国产亚洲精久久久久久无码| 成人免费网站视频www| 亚洲VA综合VA国产产VA中| 日本视频免费观看| 亚洲宅男天堂在线观看无病毒| 天堂在线免费观看| 亚洲AV本道一区二区三区四区| 91成人在线免费观看| 亚洲国产成人综合| 好男人视频在线观看免费看片| 国产亚洲综合视频| 亚洲无码在线播放| 99国产精品视频免费观看| 亚洲一区二区三区免费观看| 国内大片在线免费看| jizz中国免费| 久久久久亚洲av无码专区喷水| 四虎永久在线精品免费观看视频| 亚洲欧美国产精品专区久久| 免费乱理伦在线播放| 在线观看特色大片免费网站| 亚洲天堂一区在线| 国产免费av片在线播放| 成年女人A毛片免费视频| 亚洲精品视频免费看| 日本二区免费一片黄2019| 国产男女爽爽爽免费视频| 亚洲精品国产免费| 在线观看亚洲免费视频| 国产日韩AV免费无码一区二区三区| 亚洲欧洲日韩不卡| 国内精品免费视频自在线| 免费无码一区二区三区蜜桃| 在线亚洲高清揄拍自拍一品区| 亚洲第一黄片大全| 182tv免费视视频线路一二三| 亚洲成aⅴ人片久青草影院按摩| 亚洲精品午夜国产VA久久成人| 在线视频观看免费视频18|