GlassFishv3在OSGi模式運(yùn)行
可能你們中的一些人會(huì)想起我在去年介紹的HK2項(xiàng)目,我曾把他描述為和OSGi模式兼容的,且最終可以被運(yùn)行在OSGi運(yùn)行環(huán)境。要感謝Sahoo的卓越的工作,我們現(xiàn)在已經(jīng)可以在Apache Felix(一個(gè)開源的OSGi容器)上執(zhí)行GlassFish V3了。
51CTO編輯推薦:OSGi入門與實(shí)踐全攻略
實(shí)際上,我們也曾嘗試在KnopflerFish上運(yùn)行,很成功,因此我們認(rèn)為可以不費(fèi)吹灰之力就在任何的OSGi容器上運(yùn)行GlasshFish。
現(xiàn)在每個(gè)人都可能會(huì)一個(gè)問題:我們是否已經(jīng)把底層的模塊框架切換到OSGi了?現(xiàn)在,我可以肯定的說:是的,我們?cè)敢?。有人?huì)說我們改變了對(duì)OSGi的想法,我們沒有。從一開始我們就一直說我們希望和OSGi兼容,我們只是實(shí)現(xiàn)了這個(gè)想法...很明顯現(xiàn)在對(duì)OSGi有著龐大的工業(yè)支持,并且 GlasshFish希望能夠參與到這個(gè)令人激動(dòng)的場面。但是我們現(xiàn)在仍然不能確定到底最終如何實(shí)現(xiàn),因?yàn)槲覀冞€在試驗(yàn)階段,我們需要下面列出的因素被滿足:
1、開源
2、符合我們擁有的兩個(gè)許可證(開源許 可證和JAVA EE許可證的條件
3、擁有一個(gè)很好的社區(qū)、郵件列表來解 答我們的問題
4、存在能推動(dòng)解決bug的人
只要任選一種實(shí)現(xiàn)方式,我們都可以得到一個(gè)巨大的提升,因?yàn)槲覀儾粌H已經(jīng)有了可以解決BUG、新增特性的工程師,而且還有來自SUN的專業(yè)性能工程師來幫我們提升整個(gè)OSGi容器的性能。
Sahoo會(huì)在一兩天內(nèi)在BLOG中描述我們接受的解決方案的相關(guān)學(xué)術(shù)問題,但是讓我在這里先簡介一下。我們將能夠同時(shí)在HK2模式和OSGi模式運(yùn)行,我還不確定HK2模式將被維護(hù)到什么時(shí)候,但是現(xiàn)在的情況是HK2模式啟動(dòng)時(shí)間(1秒)比 OSGi模式(2秒)稍快一些。我認(rèn)為這不是什么重要的問題,我們將繼續(xù)。HK2快一些這并不奇怪,因?yàn)樗幌馩SGi是一個(gè)通用模塊化的子系統(tǒng),而是為我們的V3定制的、優(yōu)化過的一個(gè)模式。
GlassFish的任何代碼都不依賴于OSGi(或者很少),我們將這些依賴都封裝在HK2中,這使得我們很容易的將系統(tǒng)切換到OSGi容器中,甚至不需要任何的改變。HK2項(xiàng)目將繼續(xù),因?yàn)樗粌H提供了很多模塊管理,還為我們專門提供了很多我們非常依賴的特性:
1、模塊管理分離層
2、通過庫來管理模塊(從OSGi R5開始)
3、輕量級(jí)的組件模型
4、依賴注入
5、配置管理
因此,如果你希望使用GlassFish V3的OSGi版本,這事我們最近打的包,不要希望奇跡出現(xiàn),當(dāng)發(fā)現(xiàn)BUG的時(shí)候不要猶豫直接發(fā)給我們。
***,用OSGi模式運(yùn)行GlassFish,只要在安裝目錄執(zhí)行下列命令即可:
java -DGlassFish_Platform=Felix -jar modules/glassfish-10.0-SNAPSHOT.jar
如果要在HK2模式運(yùn)行,只需運(yùn)行下列命令:
java -jar modules/glassfish-10.0-SNAPSHOT.jar
【編輯推薦】