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