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