程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> J2EE >> OSGi和Spring入門:什麼是Spring動態模型(Spring DM)?

OSGi和Spring入門:什麼是Spring動態模型(Spring DM)?

編輯:J2EE

【51CTO精選譯文】本文是《你好,OSGi》系列的第五部分。從本篇開始將講述Spring動態模型。我們將一起來發現,為什麼Spring動態模型對於開發者是一個如此令人興奮的選擇。這些開發者已經對Spring配置非常熟悉,並需要挖掘OSGi的模塊性、簡易的版本控制以及應用程序生命周期支持。

51CTO編輯推薦:OSGi入門與實踐全攻略

使用OSGi和Spring構建面向服務的應用程序

OSGi,也稱為 Java 語言動態模塊系統,它為 Java 應用程序開發指定了一種模塊方法,以及一組標准化的模塊,用於管理模塊之間的從屬性。OSGi服務平台的Spring動態模型項目(即Spring動態模型,簡稱Spring DM)允許開發者構建Spring應用程序,這種應用程序能夠在OSGi容器中進行部署。對於熟悉Spring編程和配置模型的 Java 企業開發者,Spring動態模型是一種較為簡易的方式,可用來熟悉OSGi的應用程序開發的模塊化方法。除了允許Spring開發者進行OSGi的模塊化架構和動態配置之外,Spring動態模型還提供了多數OSGi應用程序所需的低階編程,因此你能夠將重點放在應用程序的業務邏輯上。

在該系列文章的第一節中(《你好,OSGi,第一節:Bundles 入門》),我們介紹了一種OSGi開發的標准方式,使用了OSGiAPI 和開源的 Equinox 容器實施。你已經學習了有關OSGi架構的知識,尤其是容器和套件(bundle),並且第一次開發了一個基於OSGi的 Hello World 應用程序。由於這個示例的目標僅僅是為了理解OSGi的基礎功能,因此該應用程序示例並不是很深入。

在本節中,你將再次構建一個 Hello World 應用程序,這次將使用Spring動態模型框架。你將會學到什麼是Spring DM以及它在模塊中利用OSGi應用程序邏輯的分離性,以及其模塊邊界的運行時強制執行。此外,你還會學習如何使用Spring動態模型完成以下事項:

在正在運行的系統中,動態安裝,升級以及卸載模塊。

通過動態地發現和使用系統中其他模塊提供的服務,構建面向服務的應用程序(SOA)。

使用Spring的 DataSource 類對系統模塊之間以及跨越系統模塊的組件進行實例化、配置、組裝(assemble)以及添加裝飾性功能。

你將看到,使用Spring動態模型可以讓你免除某些死板的機械工作,以及更為困難的工作:理解OSGi框架之下發生了什麼。因此,你將能夠深入挖掘應用程序邏輯,並在開發流程中更快地完成這種挖掘。

為了理解本節中的示例,你需要一個包含 Eclipse 3.3 和Spring動態模型的開發環境。

OSGi和Spring框架

目前OSGi的流行程度增加急速上升。某些應用程序服務器已經記過重新裝備以利用OSGi的模塊化框架,其中包括 IBM 的 WebSphere 應用程序服務器、BEA 的 microService 架構(mSA),以及JOnAS 5,一個開源的應用程序服務器,該服務器在OSGi的架構之上從基礎進行構建。JBoss 也在開發基於OSGi的類加載程序(classloader)並計劃參加一個OSGi核心規則實施。也許最重要的是,Eclipse 基金會(Eclipse Foundation)的OSGi容器/運行時組件引擎 Equinox 最近已經升級為頂級的項目狀態,在這種狀態下,它將被用作新的 Eclipse 運行時規范(Eclipse Runtime Initiative)的基礎。

甚至在OSGi當前的流行度激增之前,已經存在將其與Spring組合中一起的討論,這一討論帶來了OSGi服務平台的Spring動態模型(SpringDynamic Modules forOSGiService Platforms )項目。Spring動態模型的功能可以劃分為兩個主要部分:第一個功能是它以OSGi套件(bundle)的形式提供Spring框架 JAR。從上一章節中你已經了解到,OSGi套件不過是 Java Achive(JAR)文件,這些文件在一個 META-INF/MANIFEST.MF 文件中包含了額外的條目,它可以作為OSGi套件的部署描述器(descriptor)。(請注意,在使用OSGi時,你不能夠直接部署 JAR 文件;你需要使用OSGi套件格式對其進行裝配。)

第二個功能,Spring DM提供了三個OSGi專用的Spring套件/JAR:

  1. org.springframeork.osgi.bundle.extender
  2. org.springframeork.osgi.bundle.core
  3. org.springframeork.osgi.bundle.io

使用Spring動態模型構建的應用程序,其構建方式不同於那些使用Spring框架的應用程序。當構建一個Spring應用程序時,你在一個或多個Spring配置文件中定義了配置信息,這種配置文件絕大多數為 XML 文件。在應用程序啟動時,Spring框架使用這些配置文件創建應用程序語境(application-context)對象。當應用程序語境創建之後,它將用於對該應用程序中的對象進行實例化、配置、組裝(assemble)以及添加裝飾性功能。

對於Spring動態模型,在啟動時,org.springframeork.osgi.bundle.extender 查詢所有處於解析(resolved)狀態以了解它們是否由Spring提供(Springpowered)。如果套件具有Spring-Context 清單頭(manifest header),或者在其 META-INF/spring 文件夾中包含 XML 文件,extender 套件將認為該套件是由Spring提供的。

當找到Spring提供的套件時,org.springframeork.osgi.bundle.extender 將在該套件中加載Spring配置文件,以並它創建一個應用程序-語境對象。在創建應用程序-語境對象時,該 extender 還會檢查該套件是否正在輸出OSGi服務。如果是,它將輸出該Springbean 到OSGi共享服務寄存器(registry)。如果套件正在導入OSGi服務,它將找到該服務並將其作為該 bean 的應用程序語境中的正常Springbean 進行添加。該 extender 還為套件事件注冊了一個監聽器,這樣,無論任何OSGi套件是否進入解析狀態,它都將檢查它是否由Spring提供並遵循相同的步驟。

在接下來的文章中,你將從設置相關環境開始,開發出你的第一個Spring動態模型應用程序,在這一過程中,上述問題都將變得明朗清晰。敬請期待!

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved