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