摘 要:本文基于OSGi規(guī)范和OSGI框架的運(yùn)行原理和編程模式對(duì)OSGi框架應(yīng)用程序的設(shè)計(jì)方法和利弊進(jìn)行深入的探討,并且完成了動(dòng)態(tài)組件管理平臺(tái)和Web服務(wù)動(dòng)態(tài)管理模塊的實(shí)現(xiàn)。
關(guān)鍵詞:OSGi框架 動(dòng)態(tài)組件管理 動(dòng)態(tài)管理模塊
中圖分類號(hào):TP31 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1672-3791(2013)07(b)-0030-01
本文以Eclipse基金會(huì)實(shí)現(xiàn)的OSGi規(guī)范的Equinox框架為核心,以Spring Dynamic Module框架作為OSGi環(huán)境下的Web容器,使用Apache CXF DOSGi框架作為在OSGi環(huán)境中發(fā)布和部署Web Service的框架提出了OSGi的動(dòng)態(tài)組件管理平臺(tái)的設(shè)計(jì)。這個(gè)平臺(tái)以O(shè)SGi插件的形式開發(fā),可以直接嵌入到基于OSGi的系統(tǒng)中,實(shí)現(xiàn)對(duì)OSGi環(huán)境的動(dòng)態(tài)化遠(yuǎn)程管理,使開發(fā)者可以在遠(yuǎn)程安裝、啟動(dòng)、停止、更新、卸載插件等操作,還可以做到動(dòng)態(tài)的進(jìn)行的Web Service的發(fā)布和注銷,為應(yīng)用程序開發(fā)人員和部署人員提供了一個(gè)遠(yuǎn)程管理應(yīng)用程序的平臺(tái)。所設(shè)計(jì)的這個(gè)平臺(tái)具有易部署、易使用、易管理、即安即有、即刪即無的特點(diǎn)。
1 OSGi規(guī)范
OSGi規(guī)范是OSGi聯(lián)盟制定的一個(gè)基于Java語言的服務(wù)規(guī)范。其核心框架規(guī)范提供了一個(gè)通用、安全、可管理的支持以Bundle(在OSGi規(guī)范中,將模塊命名為Bundle,在OSGi框架中采用Bundle的方式來組織和部署系統(tǒng))方式下載并擴(kuò)展布署的Java框架[1]。
OSGi的體系結(jié)構(gòu)主要包括5個(gè)部分:(1)運(yùn)行環(huán)境是Bundle應(yīng)用所依賴運(yùn)行的Java執(zhí)行環(huán)境。(2)模塊層定義了Bundle應(yīng)用的加載策略。(3)生命周期層可以動(dòng)態(tài)地對(duì)Bundle進(jìn)行安裝、啟動(dòng)、停止、升級(jí)和卸載等操作,該層提供了一組API來控制Bundle的運(yùn)行時(shí)操作。(4)服務(wù)層定義了一個(gè)集成在生命周期層中的動(dòng)態(tài)協(xié)作模型,是發(fā)布、動(dòng)態(tài)尋找、綁定的服務(wù)模型。(5)安全層的安全管理是基于Java2安全體系的,貫穿在OSGi平臺(tái)的所有層中,它能夠?qū)Σ渴鹪贠SGi運(yùn)行環(huán)境中的Bundle應(yīng)用進(jìn)行詳細(xì)的管理控制[2]。
2 動(dòng)態(tài)組件管理平臺(tái)的實(shí)現(xiàn)
本系統(tǒng)的核心模塊是OSGi Web Admin模塊,其主體功能是給用戶提供的B/S架構(gòu)的用戶界面,使得用戶可以在瀏覽器上瀏覽網(wǎng)頁的形式對(duì)OSGi環(huán)境進(jìn)行一些操作,瀏覽器展示的頁面接收到這些操作之后發(fā)送給后臺(tái)編寫好的Web Bundle,然后再Web Bundle中通過BundleContext對(duì)OSGi容器進(jìn)行相應(yīng)的控制和操作[3]。這些操作包括:Bundle的安裝、啟動(dòng)、停止、更新、卸載等。這個(gè)系統(tǒng)中有個(gè)很重要卻比較難實(shí)現(xiàn)的部分,就是Web Bundle的上傳安裝和上傳更新。
在OSGi環(huán)境中,通過每個(gè)Bundle的BundleContext對(duì)象可以獲取到OSGi環(huán)境中運(yùn)行的所有的Bundle的各種信息,也可以對(duì)OSGi環(huán)境進(jìn)行各種管理,其中核心的函數(shù)有update、installBundle、start、stop等等。
在系統(tǒng)的設(shè)計(jì)中比較關(guān)鍵且難度高的模塊是Web Bundle的安裝和更新。在Java中的Web應(yīng)用程序中有很多的資源文件,如:html文件、圖片文件、資源文件、樣式列表文件、jsp文件、java源文件等等。為了不忽略掉大部分和Web應(yīng)用程序有關(guān)的資源文件,在設(shè)計(jì)本系統(tǒng)的時(shí)候采用了對(duì)Web Bundle進(jìn)行zip打包;另一方面,為了不降低這個(gè)系統(tǒng)的可用性和可操作性,本系統(tǒng)在后臺(tái)實(shí)現(xiàn)了一個(gè)Web應(yīng)用程序的編譯模塊,只要用戶把自己開發(fā)的Web應(yīng)用程序直接打包成Zip包,上傳到Web Admin Bundle,OSGi環(huán)境中的Compiler模塊便會(huì)完成對(duì)這個(gè)Web Bundle的編譯工作。
3 Web服務(wù)動(dòng)態(tài)管理模塊設(shè)計(jì)
基于OSGi的Web服務(wù)的動(dòng)態(tài)管理的實(shí)現(xiàn)主要分為以下三個(gè)方面。首先,這個(gè)模塊需要設(shè)計(jì)成一個(gè)OSGi插件(圖2中的WebServiceFactory模塊)運(yùn)行在OSGi環(huán)境中并能和上一章中實(shí)現(xiàn)的動(dòng)態(tài)組件管理模塊系統(tǒng)工作。其次,需要實(shí)現(xiàn)Web服務(wù)的動(dòng)態(tài)發(fā)布和動(dòng)態(tài)注銷。最后,需要實(shí)現(xiàn)能夠在整個(gè)OSGi環(huán)境中搜索可用的Web服務(wù)并呈現(xiàn)給管理員,是管理員能夠隨時(shí)詳細(xì)的了解系統(tǒng)中運(yùn)行的Web服務(wù)的詳細(xì)信息。
基于OSGi的Web服務(wù)動(dòng)態(tài)管理模塊的前臺(tái)展示出OSGi環(huán)境中所有可用的Web服務(wù),也就是WebService爬蟲程序搜索的結(jié)果。點(diǎn)擊“Add a New Endpoint”按鈕就會(huì)發(fā)布一個(gè)新的Web服務(wù),在這里添加所要發(fā)布的Web服務(wù)的地址便可實(shí)現(xiàn)Web服務(wù)的動(dòng)態(tài)發(fā)布,發(fā)布成功后點(diǎn)擊“Remove”按鈕即可刪除相應(yīng)的Web服務(wù),而點(diǎn)擊“WSDL”按鈕可以查看相應(yīng)Web服務(wù)的WSDL描述,完成基于OSGi的Web服務(wù)動(dòng)態(tài)管理模塊的實(shí)現(xiàn)。
4 結(jié)論
OSGi給Java帶來了模塊化,這個(gè)技術(shù)在Java能觸及的應(yīng)用領(lǐng)域都得到很很廣泛的關(guān)注和應(yīng)用。本文研究并實(shí)現(xiàn)了基于OSGi的動(dòng)態(tài)組件管理平臺(tái)和Web服務(wù)動(dòng)態(tài)管理模塊,并對(duì)OSGi的企業(yè)級(jí)應(yīng)用開發(fā)模式進(jìn)行了深入的研究。對(duì)于Web日益興盛的今天具有一定實(shí)用性,對(duì)于把OSGi應(yīng)用到企業(yè)級(jí)領(lǐng)域具有一定的推廣意義。
參考文獻(xiàn)
[1]林昊,曾憲杰.OSGI原理與最佳實(shí)踐[M].北京:電子工業(yè)出版社,2009.
[2]劉陳,張峰.基于OSGi的短信平臺(tái)設(shè)計(jì)[J].航空計(jì)算技術(shù),2008(6).
[3]一種基于OSGi的服務(wù)動(dòng)態(tài)化模型應(yīng)用[J].計(jì)算機(jī)系統(tǒng)應(yīng)用,2011(12).
[4]周明輝,張益菲,梅宏.面向OSGi的應(yīng)用服務(wù)器重構(gòu)[J].計(jì)算機(jī)科學(xué)與探索,2010(2).