OSGI进阶:序

 由  ValRay 发布

1. 序

1.1. 读者对象

此篇文档适合具备OSGi基础概念或已阅读《OSGi实战》的读者 阅读,尤其是希望将 OSGi应用至实际的商业项目/产品的读者。 阅读此篇 Opendoc 的读者应具备以下知识: 如何在 Eclipse 中搭建 OSGi 应用开发环境; 如何部署 OSGi 应用; 对于 OSGi 应用开发有大致的了解(如 DS 怎么使用)。

1.2. 编写目的

《OSGi 实战》Opendoc 发布已有一年多了,《OSGi 实战》Opendoc 作为一篇 OSGi 入门级的 Opendoc,主要是起到介绍 OSGi 的作用,从而吸引更多的人认识 OSGi 和对 OSGi 产生兴趣,很高兴《OSGi 实战》在过去的一年中得到了很多朋友的关注,更值得高兴的是短短的一年来 OSGi 取得了很大的进步,几乎可以称得上是 OSGi 发展历史上具备里程碑意义的一年。 OSGi 目前的现状格局从下图中可以管窥一二: 图表 1

OSGi格局

在这一年 OSGi 成功进入企业应用领域,相继受到各大厂商的认可和采用,例如 IBM 的Websphere V6.1、BEA更是将其所有产品都重构为基于OSGi而开发的microServices 上等等;在开源界 OSGi 也是引起了很大的反响,例如 Spring 和 OSGi 的结合、Apache 宣布 Struts 2 要采用 OSGi 等等。

OSGi 联盟很好的抓住的了这样的机会,成立了专门的 EEG 小组,以更好、更快的推进 OSGi 在企业领域的发展,而同时在 EclipseCon2007 上,OSGi 也成为了主要的话题,这对在整个企业 IT 界中推广 OSGi 起到了巨大的作用。 在 Java 规范领域,OSGi 成为了 JSR291 的规范标准,尽管没有成为 JSR277 的标准,但一定程度上还是反应了 OSGi 已经得到了各大厂商的认可。 在这样的大环境下,OSGi 在国内也受到了越来越多的关注和认同,不少朋友也都有了将 OSGi 使用到实际的项目/产品中去的想法,其中有部分朋友已经在实际的项目/ 产品中开始使用 OSGi,但其中更多的朋友由于这样那样的原因暂时放弃了在实际项目/产品中使用 OSGi 的想法,总结下来主要有这么几点原因: 基于 OSGi 怎么来设计/实现/部署/测试项目和产品 OSGi 对于模块化有严格而规范的定义,这对于传统的设计/实现/部署/测试模式都会有一定的影响,而同时如何来充分发挥 OSGi 带来的动态性和可扩展性也是关键的问题,对于系统的架构设计者而言会非常的关心这个问题,否则的话采用 OSGi 就没有任何意义了,但从目前可获取到的 OSGi 资源中很难找到这方面的指导,这成了很多架构设计者不敢冒险选择 OSGi 应用到实际项目/产品中的原因。

OSGi 怎么和流行的 Java 领域的 B/S 体系架构集成 这个问题困扰了很多的朋友,因为如果 OSGi 无法和流行的 Java 领域的 B/S 体系架构集成的话,那也就意味着如果采用 OSGi 的话,项目/产品的很多基础框架都得从头再来,同时也意味着整个团队的知识体系得重建,这肯定是不可取的。 而从各方面 OSGi 的资源中确实找不到集成的方法,因此这也成了很多朋友放弃在实际的项目/产品中使用 OSGi 的原因。 基于 OSGi 怎么来实现分布式的系统 这个和做 B/S 系统的朋友的疑问是一样的。 怎么把原有的项目/产品部署为 OSGi 应用 有部分项目可能是长期的项目,产品的话就肯定是长期发展的,这些项目/产品都已经有一定的积累了,不可能因为要重构为 OSGi 应用而推倒从来,从已有的 OSGi 资源中又获取不到相关的指导,因此这也成为了很多朋友不得不放弃使用 OSGi 的原因。 作为 OSGi 的拥护者和实践者,我也非常希望能有越来越多的人能够将 OSGi 应用到实际的项目/产品中去,《OSGi 实战》Opendoc 吸引了不少的人关注 OSGi,但由于上面的这些原因大家没有把 OSGi 应用到实际项目/产品上去,我感到非常的遗憾,因此有了编写一篇新的 Opendoc 的想法,把自己有限的知识和经验分享给大家,尽量的解除大家的担忧和忧患,而将 OSGi 应用到实际的项目/产品中去,这也是本篇 Opendco 编写的目的。 随着本篇 Opendoc 也会诞生出一些的 OSGi 开源项目,另外目前我已将在商业产品中使用的插件管理框架开源出来了,详细信息请大家访问以下地址: http://www.blogjava.net/BlueDavy/archive/2007/10/05/150598.html

1.3. 导读

本篇 Opendoc 遵照着让大家放心的将 OSGi 使用到实际的项目/产品的指导思想而编写,以实际的例子来解答大家心中的疑问。 解答如何基于 OSGi 怎么来设计/实现/部署/测试项目和产品 Opendoc以此开篇,以一个留言板系统实例讲解了OSGi应用在设计时应把握的几个重点原则,并遵照设计完成留言板系统的设计/实现和部署,具体内容请参见基 于OSGi的留言板。 解答 OSGi 怎么和 Java 领域流行的 B/S 体系架构进行集成 Opendoc中详细讲解了如何将OSGi与Hibernate、Spring以及Webwork进行集成,并由此诞生了OSGi+Hibernate+Spring+Webwork(OHSW)的脚手架,基于此脚 手架完成了对于留言板系统的重构,具体内容请参见与流行的Java B/S体系架构进行集成。 解答基于 OSGi 怎么来实现分布式的系统 Opendoc中详细讲解了怎么实现分布式的OSGi应用的通讯,并由此诞生了一个简单的分布式OSGi应用通讯的脚手架,基于此脚手架完成了对于留言板系统的重构,具体内容请参见基于OSGi搭建分布式系统。 解答怎么把原有的项目/产品部署为 OSGi 应用

Opendoc中详细介绍了将一个传统的基于Hibernate+Spring+Webwork的留言板系统重构为部署至OHSW的OSGi应用的步骤,以此说明如何将原有的额项目/产品部署为OSGi应用,并重构原有代码使其具备OSGi应用的模块化、动态化以及可扩展性的特征,具体内容请参见将原系统重构为基于OSGi的系统。 在解答了上面的几点问题后,为了能够让大家更好的使用 OSGi,在后的章节中总结了一些 OSGi 应用的设计模式和佳实践。

1.4. 致谢

在编写这篇 Opendoc 的过程中,得到了很多朋友无私的支持,在此略表谢意:

Kyang:感谢你对于预览版的反馈意见;

Jlinux(唐勇):感谢你对于预览版的反馈意见;

Caoxg(曹晓刚):感谢你对于预览版的反馈意见和封面的改进; Xiaodao:感谢你的新闻报道; 霍泰稳:感谢你将此文档制作为InfoQ中文站迷你书(近期发布)并宣传; 还有其他未在此列出名字的关注此文档的朋友们,在此一并表示感谢。

查看评论