概述:
接觸OSGi已經有兩三年了,而真正運用OSGi于項目之中,也將近兩年。這兩年來,因為OSGi的不太成熟也讓我飽受歷練。
如果你對OSGi這個名詞有點陌生,那本系列教程就不太適合你了,如果你想學習本系列教程,請你先去了解OSGi的相關概念。
拽寫本系列教程的目的在于給想要在企業應用中使用OSGi技術的同學朋友們以實際經驗指導,希望能給你帶來收獲。
名詞解釋:
OSGi:OSGi是Open Service Gateway Initiative的簡稱,可以稱是一種技術,也可以稱是一個平臺,亦可稱之為一種規范。
Bundle:OSGi中最重要的元素之一,也是OSGi中最小的物理元素。它是一個jar包,但它持有一份能夠進行自我描述的元數據文件(MANIFEST.MF),雖然普通的jar包中也存在有MANIFEST.MF文件,但非Bundle的jar的MANIFEST.MF文件中缺少進行自我描述的元數據信息。
Equinox:OSGi的一個參考實現,也是Eclipse3.2+的核心。
SSH腳手架:SSH腳手架是指由Struts+Spring+Hibernate組合在一起的開發框架。
Spring-DM:Spring-DM是SpringDynamicModules的簡稱,是由SpringSource提供的,致力于整合Spring框架和OSGi平臺的一個框架。
Plug-in:這里的Plug-in指基于OSGi技術的插件工程。
Maven:用來管理項目依賴及構建的一個腳本工具。
EBR:這里的EBR是SpringSource提供的Enterprise Bundle Repository的簡稱
入門要求:
學習本系列教程的同學需要了解SSH腳手架,熟悉Eclipse IDE開發,對Maven有一定的了解。
前期準備:
JDK1.6+
Eclipse3.4+
Spring2.5.6+
Spring-DM1.1.2+
Maven2.0.9+
EBR訪問地址:http://www.springsource.com/repository/app
需要解決的問題
要使SSH腳手架能夠正常運行于OSGi環境,那我們首先要解決的問題有三。其一是cglib的類加載器的改造,其二是解決數據庫驅動包跟數據庫連接池缺少依賴的問題,其三就是整理運行于OSGi環境下的SSH腳手架需要依賴的Bundle對象。
也許有人會說,要讓Java應用程序運行OSGi那有什么困難的呢?當然,解決問題的手段多種多樣,但要創建一個標準的OSGi基于OSGi的應用程序,還確實不是那么的簡單。
解決了以上所說的三個問題,基于SSH開發OSGi應用就不成問題。但該如何解決以上三個問題呢,以及解決了以上三個問題后如何來規范這種基于OSGi環境下的SSH開發呢,又該如何保證開發效率能夠保持在或更優于以往開發非OSGi應用時等一系列問題呢。要想了解如何解決,敬請關注本系列文章。