OSGi在應(yīng)用時具備了典型的微核系統(tǒng)的特點,但對于實際項目/產(chǎn)品型的應(yīng)用而言,這個微核有些過于底層了,為什么這么說呢?
對于實際項目/產(chǎn)品型的應(yīng)用而言,何謂其微核呢,應(yīng)該說其腳手架或開發(fā)平臺才是它的微核,而并非僅僅是OSGi框架,當(dāng)然,也可以將自己的腳手架或開發(fā)平臺以Fragment-Host的方式綁定到OSGi的System Bundle上去,但這樣的做法無疑有些evil了,TPF誕生的最主要的目的就是形成一個應(yīng)用級的微核的概念,使得我們在管理實際的項目和產(chǎn)品時,能夠?qū)⒛_手架和實際的業(yè)務(wù)應(yīng)用模塊分離管理,讓腳手架也變成微核,這樣在管理時就可以做到對應(yīng)用系統(tǒng)的統(tǒng)一管理,而同時保持一個含應(yīng)用意義的微核(也可以認(rèn)為是開發(fā)平臺)的穩(wěn)定運行,在具備了TPF的情況下,就可以將應(yīng)用系統(tǒng)從部署上分為腳手架和應(yīng)用系統(tǒng),而在管理上也可以單獨對應(yīng)用系統(tǒng)進(jìn)行管理,如啟動應(yīng)用系統(tǒng)、停止應(yīng)用系統(tǒng),同時避免應(yīng)用開發(fā)人員對腳手架無意的修改。
在本篇文檔中將介紹TPF提供的功能、TPF實現(xiàn)的方法以及TPF的下載地址。
功能
TPF以web形式來管理TPF中的插件,該web管理端提供了以下功能:
l 插件的安裝
在插件的安裝上TPF支持兩種形式:
n 手工輸入插件的地址
可用于實現(xiàn)位于服務(wù)器上的目錄形式的插件的安裝。
n 選擇插件文件
可用于實現(xiàn)遠(yuǎn)程安裝插件至服務(wù)器或安裝服務(wù)器上的插件,這些插件必須是zip或jar格式的。
上傳至服務(wù)器的路徑在TPF的cn.org.osgi.tpf.webconsole的MANIFEST.MF中指定。
l 插件的管理
TPF僅管理通過TPF Web管理端安裝的插件,通過install方式在OSGi console中安裝的插件TPF將不進(jìn)行管理。
TPF支持插件的啟動、更新、停止、卸載的管理。
l 插件MANIFEST.MF修改的支持
TPF支持修改插件的MANIFEST.MF文件的內(nèi)容。
l 應(yīng)用系統(tǒng)的管理
TPF具備了應(yīng)用級微核的概念,因此TPF可支持應(yīng)用系統(tǒng)的管理,其實意思就是可以統(tǒng)一的對通過TPF部署的插件進(jìn)行管理:
n 統(tǒng)一的啟動TPF中的所有插件;
n 統(tǒng)一的停止TPF中的所有插件;
n 導(dǎo)出TPF中所有的插件的配置。
這個功能使得只需要在一臺機(jī)器上完成了應(yīng)用系統(tǒng)的部署后,可以通過導(dǎo)出配置來生成TPF啟動時的插件配置文件,這樣在其他機(jī)器上再部署時就不需要再通過插件管理端來部署插件了。
l 遠(yuǎn)程應(yīng)用系統(tǒng)的狀態(tài)查詢
TPF支持查詢遠(yuǎn)程部署至TPF的應(yīng)用系統(tǒng)的運行狀態(tài)。
l 遠(yuǎn)程應(yīng)用系統(tǒng)的管理
TPF支持管理遠(yuǎn)程應(yīng)用系統(tǒng)的狀態(tài),可停止和啟動遠(yuǎn)程的應(yīng)用系統(tǒng)。
實現(xiàn)方法
TPF的最重要的功能是要實現(xiàn)應(yīng)用級微核,要實現(xiàn)應(yīng)用級微核,就要讓TPF知道哪些是應(yīng)用系統(tǒng)的插件,只要知道哪些插件是需要列入TPF管理的就行了,對于這個問題TPF通過在其web管理端安裝插件時將插件的信息寫入至一個tpf.system.plugins文件來實現(xiàn),通過這樣的方法就可以使得TPF知道哪些插件是要管理的,TPF將記錄這些插件的id、啟動順序、插件位置、插件名稱以及插件的狀態(tài),當(dāng)再次啟動OSGi應(yīng)用時,TPF將通過此文件來加載插件,此處要注意,這些插件并不是OSGi框架直接加載的,而是通過TPF來加載的,這樣有助于TPF來控制插件的啟動過程、保持插件原有狀態(tài)等。
在實現(xiàn)了應(yīng)用級微核概念的基礎(chǔ)上,TPF基于OSGi的API實現(xiàn)了像插件的安裝、啟動、停止、更新、卸載這些管理功能,基于文件操作的方式實現(xiàn)了對于Manifest.mf的修改。
在遠(yuǎn)程系統(tǒng)的狀態(tài)監(jiān)控和管理上,TPF基于OSGi.org.cn的axis封裝模塊實現(xiàn)了與遠(yuǎn)程的OSGi應(yīng)用通訊從而獲取遠(yuǎn)程OSGi應(yīng)用的狀態(tài)并進(jìn)行管理。
下載
暫時還未把TPF歸入開源的project中,感興趣的同學(xué)可以先從以下地址下載源碼和可運行版本:
源碼:
http://www.bluedavy.com/opendoc/TPF-Source.zip
可運行版本:
http://www.bluedavy.com/opendoc/TPF-dist.zip
等將來把TPF歸入到OSGi.org.cn的開源項目后,大家就可以通過svn來共同發(fā)展TPF項目了。
后續(xù)版本
目前版本的TPF對于大家來說也許主要是webconsole部分的功能,而且更多的也許是,TPF在后續(xù)主要需要增強的是插件啟動的控制上的管理、提供系統(tǒng)依賴的圖形化的分析以及遠(yuǎn)程TPF應(yīng)用的圖形化的監(jiān)控和管理等等。
另外TPF在代碼級別也還有很多可完善的地方,在實現(xiàn)上也許可以不專門出現(xiàn)一個tpf.system.plugins,而是通過在MANIFEST.MF中擴(kuò)展出一個屬性來實現(xiàn)應(yīng)用級微核的概念,還有像將TPF的遠(yuǎn)程管理剝離開,以便不需要的話就可以不安裝此插件。
在TPF得到了一定的完善后,將會把它貢獻(xiàn)給OSGi Bundle Repository。