<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制片厂制作传媒免费版樱花| 亚洲午夜日韩高清一区| 免费在线人人电影网| 日本不卡视频免费| 国产亚洲精品美女久久久久 | 亚洲2022国产成人精品无码区| 一级做受视频免费是看美女| 亚洲精品国产精品乱码不卡| 一级毛片aa高清免费观看| 亚洲人妻av伦理| a级在线免费观看| 亚洲第一视频网站| 免费99精品国产自在现线| 亚洲午夜福利在线视频| 日韩电影免费在线| 又长又大又粗又硬3p免费视频 | 一区二区三区观看免费中文视频在线播放| 亚洲熟妇无码另类久久久| 久久国产精品国产自线拍免费| 亚洲自偷自拍另类12p| 国产又黄又爽又猛免费app| 亚洲色成人WWW永久在线观看 | 中文字幕精品无码亚洲字| a级毛片在线免费| 亚洲综合色一区二区三区小说| 国产在线a免费观看| 国产精品亚洲综合天堂夜夜| 亚洲日韩中文字幕在线播放| 中文字幕天天躁日日躁狠狠躁免费| 亚洲人成网站看在线播放| 亚洲第一成人影院| 久久精品成人免费观看| 亚洲色少妇熟女11p| 亚洲人成人网站色www| 成年人免费的视频| 免费在线观看一区| 亚洲成aⅴ人片在线影院八| 日本一道综合久久aⅴ免费| 最近中文字幕大全免费版在线|