OpenDoc Series':OSGI实战(序)

 由  ValRay 发布
作者BlueDavy
联络BlueDavy@gmail.com

文中的代码请参见随文发布的 code.rar。classic 目录放置了基于 Equinox 的实战部分的代码;ds 目录放置了基于 ds 重构后的代码;EventAdmin 目录放置了使用 EventAdmin Service 的演示代码。 随文还发布了一个可直接运行的环境 dist.rar,解压后直接运行其中的 run.bat,就可通过 http://localhost:8080/demo/page/login.htm 来访问用户登录验证模块。

OpenDoc 版权说明

本文档版权归原作者所有。 在免费、且无任何附加条件的前提下,可在网络媒体中自由传播。

如需部分或者全文引用,请事先征求作者意见。 如果本文对您有些许帮助,表达谢意的好方式,是将您发现的问题和文档改进意见及时反馈给 作者。当然,倘若有时间和能力,能为技术群体无偿贡献自己的所学为好的回馈。

Open Doc Series 目前包括以下几份文档: Spring 开发指南 Hibernate 开发指南 ibatis2 开发指南 Webwork2 开发指南 持续集成实践之 CruiseControl 请订阅http://groups.google.com/group/redsaga-notify ,以获得新版本及其他Opendoc的release通知,或从http://wiki.redsaga.com获取新更新信息。

自工作以来就一直很关注插件体系结构的东西,从早对于 ant、maven 这些部分支持插件思想的开源工具的关注,到对于 portal 时代 portlet 这种较为完整的插件体系结构的关注,到对于 Eclipse 3.0 采用 OSGI 作为其插件体系结构的思想的关注。 但真正开始在实际的产品中使用插件体系结构却是 04 年的事,在 04 年开始在产品中采用插件体系结构作为系统的基础架构,不过由于当时对于 OSGI 的陌生,所以在产品中采用的是自主编写插件架构实现的方式,事实证明插件体系结构的实现远不如想像中的那么简单,终基于那个自主实现的插件架构来开发系统的插件并不容易,而且也不方便,也是基于这次的失败上让自己真正深刻的去思考插件体系结构,开始关注 Eclipse 采用的 OSGI,OSGI 在插件体系结构的独到的设计让它得到了 Eclipse 的认可。 在对 OSGI 规范进行研读的同时,无意中发现 Eclipse 成立了一个作为 OSGI R4 RI 的工程――Equinox,出于对 OSGI 的认同以及对于 Eclipse 系列 Project 的高质量的信任,尽管开源界中还有象 Oscar、Knopflerfish 这样的知名的 OSGI 框架,还是极度的关注 Equinox 这个工程,对 Equinox 进行了试用,不出意料,尽管 Equinox 还没有正式的发布版本,甚至连里程碑版本都还没有,但 Equinox 作为 OSGI R4 RI,表现非常出色,特别是借助 Eclipse 提供的 IDE,更是令它在 OSGI 框架的竞争中占据优势。 刚好在这个时候手上有一个新的产品,之前的试用让自己对于 Equinox 有了些理解,便决定采用 Equinox 作为这个产品的底层框架,经过几个月的开发后,Equinox 确实给这个产品带来了很多的优点,但同时由于 Equinox 文档的缺乏以及国内对于 OSGI 不高的关注度,在开发的过程中也是碰到了不少的问题,但总体而言 Equinox 给这个产品带来的优点还是多于缺点。

OSGI 在国内的关注度目前仍然很低,而 Equinox 更是,其实在国外 OSGI、Equinox 的关注度都算挺高的,目前国外已经有不少的项目采用 Equinox 作为基础框架了,OSGI 的推广之所以比较难的原因就在于 OSGI 的引入并不象决定项目是采用 struts 还是 webwork 那么简单,OSGI 带来的是设计思想以及开发方式的改变,这也就一定程度上要求系统设计师以及程序开发人员要接受一种新的开发方式,形象的说我觉得就是要让你从 jsp+javabean 的方式转为采用 MVC 框架的方式,自然会有些不适应的感觉,但相信只要接受了,会体现出它的足够优势,而插件体系结构是我认为在未来几年内将流行的开发方式,目前国外对这方面其实也属于摸索阶段,如果现在我们就能够对 OSGI 这样优秀的插件体系结构进行足够的熟悉和关注,那么也许我们能够有机会第一次提出更为领先的设计思想,而不是一直在思想级别远落后于国外,被国外牵着鼻子走,希望能够通过这篇 Opendoc 对 OSGI、Equinox 做一个较为完整的介绍,从而有更多的人能够对 OSGI、Equinox 进行关注,同时也希望更多的人将 OSGI、Equinox 应用到实际的项目、产品中去并提出基于插件体系结构的佳实践。

本篇 Opendoc 按照学习开源框架的基本流程进行编写,从体验 OSGI 到基于 OSGI 框架的实战,到深入 OSGI,完成对于 OSGI 从入门到深入学习的过程,后对于 OSGI 的现状和发展发表些自己的看法和思考,限于笔者的水平以及时间,文内难免有些错误,还请大家不吝指正,也希望本文能作为国内 OSGI 的抛砖之作,引出更多的关于 OSGI 的 Opendoc,在我的 blog 上也会不断的编写关于自己在 OSGI、Equinox 上的实战的体会和心得,欢迎大家多多交流。

在编写这篇 Opendoc 的过程中,感谢众多网友提出的意见,在此特别感谢一餐三碗、jazzy、caoxg 以及 brokendoor 等朋友对预览版提出的建议,使得正式版得以早日完成。

查看评论