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