yuyee

          bundle生命周期

          bundle的生命周期分為installed,resovled,starting,active,stopping,unstalled
          install:解析bundle的MANIFEST.MF信息,校驗格式,同時查看是否存在相同的bundle, 分配bundleid,生成bundle對象,并放入已安裝的bundles集合中,狀態為installed,可以通過命令bundle id來查看這個ID的bundle的關系圖
          resolve:尋找bundle中所需依賴的包和bundle是否存在以及被resolve,包括import-package,require-bundle,如尋找到則進入檢查,檢查完沖突后形成綁定關系,有個關系圖直接定位,以便加載類時直接加載。
          start:檢查bundle狀態,如未resolve,則先resolve,尋找MANIFEST.MF中配置的bundle-activator,找到后調用他的start方法,將bundle狀態改為 active
          stop:卸載當前bundle對外提供的service,并釋放bundle引用的其他服務,之后調用activator類里的stop方法,改bundle狀態為resovled
          uninstall:
          檢查bundle狀態,如果為active,則先stop,釋放bundle對其他bundle的類依賴,如其他bundle依賴此bundle的類,則記錄,如沒有,則釋放該bundle的classloader,最終修改bundle的狀態為unstalled
          update:
          首先是停止當前bundle,
          重新安裝并resovle bundle,恢復到bundle更新之前的狀態
          如果希望更新bundle所引用到的類,則必須refresh動作,但refresh也值對unreslve狀態以及uninstall時還有其他類依賴classloader還存活的bundle進行unresolve動作,并重新resolve對他們有依賴的bundle,建立新的綁定關系圖,因此refresh可能會讓某些bundle的classloader重建.

          posted on 2010-10-27 00:35 羔羊 閱讀(515) 評論(0)  編輯  收藏 所屬分類: osgi

          主站蜘蛛池模板: 都匀市| 墨玉县| 汉沽区| 南部县| 扬中市| 大宁县| 舟山市| 拉萨市| 曲沃县| 榆社县| 盘锦市| 葫芦岛市| 邵东县| 织金县| 通江县| 蒲城县| 和静县| 太白县| 丹棱县| 淮北市| 阿拉善右旗| 舞阳县| 民县| 上高县| 武强县| 彭山县| 封丘县| 山西省| 夏津县| 安塞县| 左权县| 永昌县| 任丘市| 克拉玛依市| 桃源县| 洛川县| 五家渠市| 常州市| 伽师县| 海原县| 沿河|