可能你们中的一些人会想起我在去年介绍的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
【编辑推荐】