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