yangbutao

           

          OSGI 服務(wù)層探究

           

          Osgi 服務(wù)層探究

           

          前段時間公司產(chǎn)品在apache的孵化項目tuscany的基礎(chǔ)上,做了一些擴展了自己的一些實現(xiàn)。在項目中發(fā)現(xiàn)模塊的動態(tài)更新帶來的模型之間的依賴關(guān)系處理比較復(fù)雜;沒有一套好的機智處理這種模塊動態(tài)的更新,部署,以及解決他們之間的關(guān)系。

          Osgi的框架很好的解決了上面的問題,更夠搭建動態(tài)化的系統(tǒng)可以說是OSGIsca的部署策略上的一種很好的參考實現(xiàn)。

          OSGI規(guī)范中包括很多層,安全層,Module 層,生命周期層,服務(wù)層等等

          這里主要對服務(wù)層(service layer)做一下介紹

          服務(wù)層定義了一個動態(tài)的協(xié)作模型,服務(wù)模型是定義在模塊(bundle)的基礎(chǔ)上的。

          Bundle可以動態(tài)的發(fā)布,查找service,并且當該服務(wù)的狀態(tài)(生命周期)改變時,更夠發(fā)出通知,這樣所有對該service關(guān)心的bundle,可以通過注冊監(jiān)聽器的方式,接收消息,做后續(xù)的處理。

          下面是它的模型


          下面簡單的加以說明:

          osgi平臺中,各個模塊(bundle)可以提供服務(wù),并且可以引用其他的服務(wù),而這些服務(wù)都有統(tǒng)一的管理注冊中心(ServiceRegistry),該注冊中心由框架提供,運行在框架之上的。

          這樣的一些服務(wù)都是歸bundle所有并且運行在它的bundle上的;所以可以通過bundlebundlecontext把這些服務(wù)注冊在ServiceRegistry中,以便能夠由框架統(tǒng)一管理,并且能夠被其他的bundle所引用。這樣當bundle的生命周期發(fā)生變化的時候,如stop,那么就能夠通過框架,來自動的卸載提供的服務(wù),并且解決好bundle之間的服務(wù)引用依賴關(guān)系。

          服務(wù)對象serviceobject,類似與pojo,調(diào)用它的接口,可以提供服務(wù)。這樣的一個serviceobject可以實現(xiàn)ServiceFactory接口,也可以實現(xiàn)其他的接口。如果實現(xiàn)了ServiceFactory,那么對于每一個bundle對服務(wù)的引用來說,都是一個通過ServiceFactory創(chuàng)建新的實例。否則所引用的服務(wù)對象就是通過bundlecontext注冊的綁定在ServiceRegistration 的原始對象。

          ServiceReference類似于服務(wù)對象的句柄,通過它可以查找到真實的服務(wù)對象。其實它只是包含了對對象的描述,如該服務(wù)是位于哪一個bundle上的,該服務(wù)的bundle是否已經(jīng)停 止,以及服務(wù)的描述等等。

          對于引用該服務(wù)的bundle來說,只是保存的service的句柄,真實的service對象可以不存在,這樣的模式被廣泛應(yīng)用在動態(tài)的環(huán)境中。

          ServiceListener可以通過BundleContext注冊在框價ServiceRegistry中,這樣在服務(wù)的生命周期改變時候,可以接收消息,每個bundle可以在自己的lisitener里,做出相應(yīng)的處理,如釋放響應(yīng)的資源等等。

          BundleContext提供了注冊服務(wù),注冊服務(wù),框架,bundle的監(jiān)聽器,查找服務(wù)的統(tǒng)一入口。

           

          暫時寫這么多,待敘

           

           

           

           

           

          posted on 2007-08-14 11:51 阿不 閱讀(1377) 評論(0)  編輯  收藏


          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導(dǎo)航:
           

          導(dǎo)航

          統(tǒng)計

          常用鏈接

          留言簿(2)

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 六枝特区| 台中县| 扎囊县| 广元市| 兴和县| 玉门市| 曲麻莱县| 高邮市| 滨海县| 花莲县| 满洲里市| 大安市| 高雄县| 师宗县| 敦化市| 阿克苏市| 隆安县| 文水县| 麻城市| 图木舒克市| 太保市| 乌拉特前旗| 遵义县| 辽中县| 青阳县| 伊川县| 宾阳县| 洛浦县| 繁峙县| 苏尼特左旗| 闽侯县| 淮滨县| 台前县| 获嘉县| 安达市| 天全县| 永仁县| 正阳县| 江城| 恩平市| 满洲里市|