OpenDoc Series’
OSGI 实战
V1.0
作者:BlueDavy
So many open source projects. Why not Open your Documents? ☺
文档说明 OSGI 实战
文档说明
参与人员:
作者 联络
BlueDavy
BlueDavy@gmail.com
文中的代码请参见随文发布的 code.rar。classic 目录放置了基于 Equinox 的实战部分的代码;ds 目录放置
了基于 ds 重构后的代码;EventAdmin 目录放置了使用 EventAdmin Service 的演示代码。
随文还发布了一个可直接运行的环境 dist.rar,解压后直接运行其中的 run.bat,就可通过
http://localhost:8080/demo/page/login.htm 来访问用户登录验证模块。
发布记录
版本 日期 作者 说明
1.0 Beta 2006.08.08
BlueDavy
原创
预览版
1.0 2006.08.25 BlueDavy
增加基于 Bridge 方式开发 B/S 应用的章节;
增加对于 Configuration Admin Service 和
Event Admin Service 讲解的章节;
增加 OSGI 关键部分讲解章节;
增加面向接口开发章节;
格式编排;
OpenDoc 版权说明
本文档版权归原作者所有。
在免费、且无任何附加条件的前提下,可在网络媒体中自由传播。
如需部分或者全文引用,请事先征求作者意见。
如果本文对您有些许帮助,表达谢意的最好方式,是将您发现的问题和文档改进意见及时反馈给
作者。当然,倘若有时间和能力,能为技术群体无偿贡献自己的所学为最好的回馈。
Open Doc Series 目前包括以下几份文档:
Spring 开发指南
Hibernate 开发指南
ibatis2 开发指南
Webwork2 开发指南
持续集成实践之 CruiseControl
请订阅
http://groups.google.com/group/redsaga-notify ,以获得新版本及其他Opendoc的release通
知,或从
http://wiki.redsaga.com获取最新更新信息。
(C) 2006 http://www.riawork.org 致力于 RIAWork、OSGI、Equinox 的推广
目录 OSGI 实战
目录
一. 序.......................................................................................................................................5
二. 体验OSGI.........................................................................................................................7
2.1. 需求实现.......................................................................................................................7
2.2. 技术角度.......................................................................................................................9
三. OSGI带来什么...............................................................................................................11
四. OSGI案例.......................................................................................................................13
五. OSGI框架.......................................................................................................................15
5.1. Equinox ......................................................................................................................15
5.2. Oscar ..........................................................................................................................15
5.3. Knopflerfish...............................................................................................................15
六. 基于OSGI框架(Equinox)的实战 ............................................................................17
6.1. 做好准备.....................................................................................................................17
6.2. 工具箱.........................................................................................................................18
6.3. 开发Bundle ................................................................................................................22
6.4. 开发、发布和使用Service ........................................................................................29
6.5. 测试和调试.................................................................................................................33
6.6. 发布基于OSGI的系统...............................................................................................34
6.7. Equinox基于OSGI的扩展 ........................................................................................37
6.8. 现有类型系统基于OSGI的开发...............................................................................38
6.8.1. B/S...................................................................................................................38
6.8.2. C/S ..................................................................................................................39
6.8.3. 嵌入式.............................................................................................................39
6.9. 注意事项.....................................................................................................................39
七. 深入OSGI.......................................................................................................................41
7.1. 关于OSGI...................................................................................................................41
7.2. OSGI R4 规范............................................................................................................41
7.2.1. Core Framework...........................................................................................41
7.2.2. StartLevel Service..........................................................................................58
7.2.3. Declarative Services ......................................................................................62
7.2.4. Configuration Admin Service.......................................................................72
7.2.5. Event Admin Service.....................................................................................75
7.3. OSGI关键部分讲解...................................................................................................77
7.3.1. ClassLoader ...................................................................................................77
7.3.2. Bundle的生命周期.........................................................................................80
7.3.3. Bundle的通讯机制.........................................................................................80
7.3.4. DS中Component的生命周期........................................................................82
7.3.5. DS中Component的通讯机制........................................................................83
八. 应用OSGI.......................................................................................................................84
8.1. 模块化设计.................................................................................................................84
8.2. 面向服务的组件模型设计.........................................................................................85
8.3. 动态性设计.................................................................................................................85
8.4. 面向接口的开发.........................................................................................................85
(C) 2006 http://www.riawork.org 致力于 RIAWork、OSGI、Equinox 的推广
目录 OSGI 实战
九. OSGI资源.......................................................................................................................87
十. OSGI框架前瞻...............................................................................................................88
十一. OSGI带来的遐想...........................................................................................................89
十二. 参考文献.........................................................................................................................90
(C) 2006 http://www.riawork.org 致力于 RIAWork、OSGI、Equinox 的推广
一、序 OSGI 实战
一. 序
自工作以来就一直很关注插件体系结构的东西,从最早对于 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 这
(C) 2006 http://www.riawork.org 致力于 RIAWork、OSGI、Equinox 的推广 第 5 页 共 90 页