第1章 OSGi简介 1
1.1 梦想中“即插即用”的系统 1
1.2 OSGi,拯救Java模块化的规范 1
1.3 厚积薄发的OSGi 2
1.4 OSGi基本概念 3
1.4.1 Bundle 3
1.4.2 Service 4
1.4.3 Service-Oriented Component Model(SOCM) 4
1.4.4 Declarative Service 6
1.4.5 部署 6
第2章 OSGi框架简介 7
2.1 Equinox 7
2.1.1 简介 7
2.1.2 环境搭建 7
2.1.3 Hello World 10
2.1.4 开发传统类型的应用 17
2.1.5 从外部启动Equinox 35
2.2 Felix 38
2.2.1 简介 38
2.2.2 环境搭建 38
2.2.3 应用的部署 38
2.2.4 在Eclipse中调试Felix 39
2.3 Spring-DM 43
2.3.1 简介 43
2.3.2 环境搭建 44
2.3.3 Hello World 48
2.3.4 Web版Hello World 51
第3章 基于Spring-DM实现Petstore 57
3.1 “即插即用”的Petstore 57
3.1.1 Petstore的功能需求 57
3.1.2 OSGi框架的功能和设计思想 58
3.1.3 Petstore的设计 60
3.2 新一代Petstore的实现 70
3.2.1 环境准备 70
3.2.2 Utils模块 72
3.2.3 Bootstrap模块 74
3.2.4 ProductDal模块 79
3.2.5 ShoppingCartDal模块 80
3.2.6 ProductList模块 81
3.2.7 ShoppingCart模块 85
3.2.8 ProductManagement模块 85
3.3 部署 85
3.4 Petstore的扩展 85
第4章 基于Apache CXF实现分布式Petstore 87
4.1 分布式OSGi 87
4.2 分布式Petstore的设计 87
4.3 Apache CXF简介 90
4.3.1 CXF-DOSGi Hello World 90
4.3.2 集成Spring-DM的CXF-DOSGi Hello World 95
4.4 分布式Petstore的实现 101
4.5 部署 105
第5章 构建OSGi Bundle Repository 107
5.1 OSGi Bundle Repository的使用 107
5.2 Apache Felix OBR的使用 110
5.2.1 命令行方式的用法 110
5.2.2 代码方式使用OBR 113
5.3 构建OSGi Bundle Repository 117
第6章 OSGi规范解读 119
6.1 OSGi规范发展历程 119
6.2 Core规范解读 120
6.2.1 Module Layer 120
6.2.2 LifeCycle Layer 129
6.2.3 Service Layer 132
6.3 OSGi Service规范解读 133
6.3.1 Log Service 134
6.3.2 Http Service 137
6.3.3 Configuration Admin Service 139
6.3.4 Declarative Services 142
6.3.5 Event Admin Service 145
第7章 Equinox实现分析 149
7.1 模块化 149
7.1.1 加载并解析jar为Bundle 149
7.1.2 Bundle类共享及类加载机制 152
7.2 动态化 159
第8章 Felix实现分析 173
8.1 模块化 173
8.1.1 加载并解析jar为Bundle 173
8.1.2 Bundle类共享及类加载机制 174
8.2 动态化 177
第9章 Spring-DM实现分析 189
9.1 Spring Dynamic Module概述 189
9.2 Bean发布为OSGi服务实现分析 190
9.2.1 Extender Bundle启动 190
9.2.2 Bundle中的NamespaceHandler处理 192
9.2.3 ExtenderConfiguration处理 194
9.2.4 ApplicationContext处理 200
9.3 将OSGi Service引入为Bean 209
9.3.1 osgi:service的处理 209
9.3.2 osgi:set和osgi:list的处理 211
9.4 将Bundle部署到Web服务器 214
9.4.1 WebExtender的启动 214
9.4.2 部署Bundle到Web服务器 215
第10章 CXF实现分析 217
10.1 Apache CXF-DOSGi实现分析 217
10.2 SingleBundle发行包 217
10.2.1 SingleBundle发行包的启动 218
10.3 把Bundle暴露为远程服务 221
10.3.1 DSW Bundle启动 221
10.3.2 RegisterDistributionProviderService 222
10.3.3 创建Hook对象及注册Listener 224
10.3.4 处理当前框架中的Bundle 225
10.3.5 发布远程服务 225
10.4 使用远程服务 231
10.4.1 Discovery Bundle启动 231
10.4.2 处理当前框架中的Bundle 232
10.4.3 注册远程服务的本地存根 234
第11章 先睹为快:OSGi R 4.2草稿版 237
11.1 Core 238
11.1.1 Module Layer 238
11.1.2 Lifecycle Layer 238
11.1.3 Service Layer 242
11.1.4 Framework API 243
11.2 Compendium 243
11.2.1 Declarative Services Specification 243
11.2.2 Deployment Admin Specification 244
11.2.3 Monitor Admin Service Specification 247
第12章 OSGi展望 251
12.1 Java企业应用领域 251
12.2 Java标准领域 252
12.3 OSGi R5 253
索引 255