OSGI 面向Java的动态模型系统
OSGI (面向Java的動態(tài)模型系統(tǒng))
OSGi(Open Service Gateway Initiative)技術是Java動態(tài)化模塊化系統(tǒng)的一系列規(guī)范。OSGi一方面指維護OSGi規(guī)范的OSGI
官方聯盟,另一方面指的是該組織維護的基于Java語言的服務(業(yè)務)規(guī)范。簡單來說,OSGi可以認為是Java平臺的模塊層。
OSGi服務平臺向Java提供服務,這些服務使Java成為軟件集成和軟件開發(fā)的首選環(huán)境。Java提供在多個平臺支持產品的可移植性。
OSGi技術提供允許應用程序使用精煉、可重用和可協作的組件構建的標準化原語,這些組件能夠組裝進一個應用和部署中。
背景
OSGi給出了一套Java模塊化規(guī)范,這套規(guī)范給出了OSGi框架的定義,而具體的OSGi平臺,如Felix和Equinox則分別是 Apache和Eclipse開源社區(qū)給出的標準規(guī)范的實現。 OSGi服務平臺提供在多種網絡設備上無需重啟的動態(tài)改變構造的功能。為了最小化耦合度和促使這些耦合度可管理,
OSGi技術提供一種面向服務的架構,它能使這些組件動態(tài)地發(fā)現對方。OSGi聯盟已經開發(fā)了例如像HTTP服務器、配置、
日志、安全、用戶管理、XML等很多公共功能標準組件接口。這些組件的兼容性插件實現可以從進行了不同優(yōu)化和
使用代價的不同計算機服務提供商得到。然而,服務接口能夠基于專有權基礎上開發(fā)。
因為OSGi技術為集成提供了預建立和預測試的組件子系統(tǒng),所以OSGi技術使你從改善產品上市時間和降低開發(fā)成本上獲益。
因為這些組件能夠動態(tài)發(fā)布到設備上,所以OSGi技術也能降低維護成本和擁有獨一無二的新的配件市場機會
安全協議
安全機制是建立在Java和Java2安全模型基礎之上。Java語言的設計對很多結構進行了限
制。例如病毒中經常遇到的緩存溢出是不可能發(fā)生的。Java語言中的訪問控制符限制了代碼可見性。
OSGI平臺通過使用私有類(在Java中不能用標準方式使用的機制)擴展了該模型。
Java2安全模型提供了一個完整模塊檢查代碼對于資源的可訪問性。OSGI增加了完全動態(tài)的權限管理,簡化了操作者和系統(tǒng)管理員的工作。
OSGI聯盟已經定義了很多協議服務,這些服務將外部協議映射為OSGI服務。HTTP服務(HttpService)該HTTP服務是servlet運行器。
bundles提供servlets,這些服務端小程序基于HTTP協議成為可用的。OSGi服務平臺的動態(tài)更新功能使HTTP服務成為一個非常具有吸引力的Web服務器,
它能伴隨著新的servlet被更新,如果需要可以遠程更新而無需重啟。
UPnP服務(UPnPService)通用即插即用(UPnP)是一個正在形成中的消費電子標準。
OSGi中的UPnP服務在一個UPnP網絡上將設備映射到服務注冊中。同樣,它也可以將OSGi服務映射到UPnP網絡。
這是發(fā)布版本3中的推薦規(guī)范。
DMT管理(DMTAdmin)開放移動聯盟(OMA)基于設備管理樹為移動設備管理提供了一個完整規(guī)定。
DMT管理服務定義該樹如何被訪問和/或者在OSGi服務平臺中被擴充。
框架結構
OSGI規(guī)范的核心組件是OSGI框架。這個框架為應用程序(被叫做組件(bundle))提供了一個標準環(huán)境。
整個框架可以劃分為一些層次:
L0:運行環(huán)境
L1:模塊
L2:生命周期管理
L3:服務注冊
還有一個無處不在的安全系統(tǒng)滲透到所有層。
L0層執(zhí)行環(huán)境是Java環(huán)境的規(guī)范。Java2配置和子規(guī)范,像J2SE,CDC,CLDC,MIDP等等,都是有效的執(zhí)行環(huán)境。
OSGi平臺已經標準化了一個執(zhí)行環(huán)境,它是基于基礎輪廓和在一個執(zhí)行環(huán)境上確定了最小需求的一個小一些的變種,
該執(zhí)行環(huán)境對OSGi組件是有用的。
L1模塊層定義類的裝載策略。OSGi框架是一個強大的具有嚴格定義的類裝載模型。它基于Java之上,
但是增加了模塊化。在Java中,正常情況下有一個包含所有類和資源的類路徑。
OSGi模塊層為一個模塊增加了私有類同時有可控模塊間鏈接。模塊層同安全架構完全集成,
可以選擇部署到部署封閉系統(tǒng),防御系統(tǒng),或者由廠商決定的完全由用戶管理的系統(tǒng)。
L2生命周期層增加了能夠被動態(tài)安裝、開啟、關閉、更新和卸載的bundles。這些bundles依賴于于具有類裝載功能的模塊層,
但是增加了在運行時管理這些模塊的API。生命周期層引入了正常情況下不屬于一個應用程序的動態(tài)性。
擴展依賴機制用于確保環(huán)境的操作正確。生命周期操作在安全架構保護之下,使其不受到病毒的攻擊。
L3層增加了服務注冊。服務注冊提供了一個面向bundles的考慮到動態(tài)性的協作模型。bundles能通過傳統(tǒng)的類共享進行協作,
但是類共享同動態(tài)安裝和卸載代碼不兼容。服務注冊提供了一個在bundles間分享對象的完整模型。定義了大量的事件來處理服務的注冊和刪除。
這些服務僅僅是能代表任何事物的Java對象。很多服務類似服務器對象,例如HTTP服務器,而另一些服務表示的是一個真實世界的對象,
例如附近的一個藍牙手機。這個服務模塊提供了完整安全保障。該服務安全模塊使用了一個很聰明的方式來保障bundles之間通信安全。
標準服務
在該框架之上,OSGi聯盟定義了很多服務。這些服務通過一個Java接口指定。bundles能夠實現這個接口,
并在注冊服務層注冊該服務。服務的客戶端在注冊庫中找到它,或者當它出現或者消失時做出響應。
這個同SOA架構使用Web服務進行發(fā)布的方式相似。
兩者主要不同是Web服務總是需要傳輸層,這個使它比采用直接方法調用的OSGi服務慢幾千倍。
同時,OSGi組件能夠對這些服務的出現和消失做出響應。更多的信息可以從OSGi服務平臺發(fā)行版本4手冊或者PDF下載中找到。
需要注意的是每一種服務都是抽象定義的,與不同計算機服務商的實現相獨立。
框架服務
OSGi框架提供一個權限管理服務,一個包管理服務和一個開始級別服務。這些服務是一個可選部分,指示框架的操作。框架服務如下:
權限管理(PermissionAdmin)目前或者將來的bundles的權限通過這種服務進行維護。一旦設置了它們,權限服務立即激活。
包管理(PackageAdmin)bundles同類和資源分享包。bundles的更新可能需要系統(tǒng)重新計算這些依賴。
這個包管理服務提供關于系統(tǒng)的實際包分享狀態(tài)和能夠刷新已經共享的包。也就是,取消依賴和重新計算依賴。
啟動級別(StartLevel)啟動級別是一個bundles集合,它們應該同時運行或者應該在其它已經啟動以前被初始化。
啟動級別服務設置當前的啟動級別,為每個bundle排一個啟動級別和審核當前的設置。
URL處理者(URLHandler)Java環(huán)境為URL處理者支持一個提供者模型。然而,這是一個單件,
不可能在一個象OSGi可能有很多提供者的協作環(huán)境上使用它。此服務規(guī)范使任何組件提供額外的URL處理者。
系統(tǒng)服務
系統(tǒng)服務提供水平功能,它在每個系統(tǒng)是必須的。日志服務,配置管理服務,設備訪問服務,
用戶管理服務,IO連接器服務和參數服務都是系統(tǒng)服務的一個方面。
日志服務(LogService)日志信息,警告,調試或者錯誤信息通過日志服務來處理的。
它接受日志實體并分派這些實體到訂閱了這個信息的其他bundles。
配置管理服務(ConfigurationAdminService)該服務提供一個設置和獲取配置信息的靈活、動態(tài)模型。
設備訪問服務(DeviceAccessService)設備訪問是OSGi為一個新的設備匹配一個驅動,
并自動下載一個實現該驅動的bundles的機制。這個可用作即插即用方案。
用戶管理服務(UserAdminService)該服務使用一個用于授權和驗證目的的用戶信息數據庫。
IO連接器服務(IOConnectorService)該IO連接器服務實現了CDC/CLDCjavax包,并作為一個服務。
該服務允許bundles提供新的可交換協議模式。
參數服務(PreferencesService)該服務提供了參數層級數據庫的可訪問性,同Windows注冊表或者Java參數類相似。
組件運行時服務(ComponentRuntime)服務的動態(tài)特性--它們能夠在任何時間來去自由--使編寫軟件變得更難。
組建運行時規(guī)范通過提供一個基于依賴聲明的XML文件來簡化處理這些動態(tài)方面。
部署管理服務(DeploymentAdmin)OSGi的主要部署格式是bundle,它是一個JAR/ZIP文件。
部署管理提供第二種可選格式:部署包。部署包能夠將bundles和相應資源聯接成可被安裝和卸載的單個交付。
完整的資源處理器模型允許用戶代碼擴充資源類型。
事件管理服務(EventAdmin)很多OSGi事件有特定的類型化的接口,使其很難接收和過濾事件。
事件服務提供一個泛化的基于主題的事件機制。這個規(guī)范包括為所有已存框架和服務事件的映射。
應用程序管理服務(ApplicationAdmin)OSGibundle模型不同于依賴于啟動和關閉形式的典型的桌面或者移動電話應用程序模型。
該應用程序管理服務提供了傳統(tǒng)應用程序模型和它所要求的管理設施。
總結
以上是生活随笔為你收集整理的OSGI 面向Java的动态模型系统的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: JSP的会话(Session)跟踪
- 下一篇: sqlserver 标准系统数据库