资源名称:OSGi与Equinox 创建高度模块化的Java系统

内容简介:

阅读本书,首先你很快就会使用Eclipse bundle工具创建第一个基于OSGi的系统,进而转向复杂的产品开发。接下来,你将掌握一些用于创建具有特殊模块化、高效性和可维护性系统的最佳实践和技巧。你将了解所有的OSGi声明式服务,以及如何通过这些服务来解决各种现实问题。最后,你会发现所有这些都在本书所提供的完整案例(从早期的原型构建到最终的应用交付)中得以实现。

资源目录:

第一部分 简介

第1章 OSGi、Equinox和Eclipse  2

1.1  简史  2

1.2  合作  3

1.3  实战的模块性和自由性  4

1.4  平台  4

1.5  生态系统  5

1.6  OSGi的来龙去脉  5

1.6.1  Java的谎言  5

1.6.2  现状核实  6

1.6.3  OSGi的寿命  6

1.7  实践中的OSGi和Equinox  7

1.8  总结  8

第2章 OSGi基本概念  9

2.1  bundle环境  9

2.2  为何选择OSGi  10

2.3  bundle剖析  13

2.4  模块化  14

2.4.1  导出包  14

2.4.2  导入包  14

2.4.3  需要的bundle  15

2.4.4  强化模块化特性  16

2.5  模块化设计概念  16

2.6  生命周期  17

2.7  协作  18

2.7.1  服务  18

2.7.2  扩展和扩展点  19

2.8  OSGi框架  20

2.9  安全性  20

2.10  OSGi框架实现  21

2.11  总结  21

第二部分 OSGi示例

第3章 教程介绍  24

3.1  何为Toast  24

3.2  Toast的演变  26

3.3  开发环境安装  27

3.4  示例代码  28

3.4.1  在章与章之间切换  28

3.4.2  比较  29

3.5  目标平台设置  30

3.5.1  预定义的目标  31

3.5.2  定义目标平台  32

3.6  通过示例进行学习  35

3.7  总结  36

第4章 你好,Toast  37

4.1  简单的场景  37

4.1.1  创建工程  37

4.1.2  Gps  38

4.1.3  Airbag和IAirbagListener  40

4.1.4  EmergencyMonitor  41

4.1.5  Main  43

4.1.6  运行  43

4.1.7  检查点  43

4.2  将Toast划分为Bundle  43

4.2.1  GPS bundle  45

4.2.2  安全气囊bundle  47

4.2.3  紧急情况监视器bundle  47

4.2.4  启动  49

4.3  总结  50

第5章 服务  52

5.1  转移到服务  52

5.2  注册GPS服务  54

5.3  注册安全气囊服务  58

5.4  获取服务示例代码  61

5.5  启动  64

5.6  故障排解  64

5.7  总结  65

第6章 动态服务  66

6.1  动态服务简介  66

6.2  使用服务追踪器  67

6.2.1  修改bundle激活器  67

6.2.2  启动  70

6.2.3  服务追踪器小结  72

6.3  使用服务激活器工具包  73

6.3.1  在目标平台上安装SAT  73

6.3.2  修改GPS bundle激活器  73

6.3.3  修改安全气囊bundle激活器  74

6.3.4  修改紧急情况监视器bundle激活器  74

6.3.5  启动  75

6.3.6  SAT小结  76

6.4  使用声明式服务  76

6.4.1  修改GPS bundle  77

6.4.2  修改安全气囊bundle  79

6.4.3  修改紧急情况监视器bundle  80

6.4.4  运行  82

6.4.5  声明式服务总结  83

6.5  总结  83

第7章 客户端/服务器端交互  84

7.1  后台  84

7.1.1  核心bundle  84

7.1.2  后台应急bundle  85

7.2  客户端  88

7.2.1  信道bundle  88

7.2.2  紧急情况监视器bundle  92

7.3  工具类  94

7.3.1  常量  94

7.3.2  属性  94

7.3.3  日志  95

7.4  运行Toast  95

7.4.1  运行后台  96

7.4.2  运行客户端  97

7.5  总结  97

第8章 测试  99

8.1  使Toast具备可测试性  99

8.2  对Toast进行单元测试  100

8.2.1  测试方案  100

8.2.2  编写测试用例  101

8.2.3  运行单元测试  103

8.3  系统测试Toast  104

8.3.1  测试规划  104

8.3.2  创建测试工具  105

8.3.3  编写测试用例  107

8.3.4  运行系统测试  110

8.4  总结  111

第9章 打包  112

9.1  定义Toast产品  112

9.1.1  创建产品配置  112

9.1.2  概述页  114

9.1.3  依赖页  115

9.1.4  配置页  116

9.1.5  启动页  116

9.1.6  运行产品  118

9.1.7  产品化客户端  118

9.2  导出Toast  118

9.3  为其他平台打包  121

9.4  认真考虑组件定义  123

9.4.1  版本和版本范围  123

9.4.2  导出包和友元  124

9.5  总结  126

第10章 插件化服务  127

10.1  分离接口与接口的实现  127

10.1.1  将Fake Airbag与其接口相互分离  128

10.1.2  将模拟GPS与其接口相分离  129

10.1.3  回归测试  129

10.2  设备模拟  130

10.2.1  概念  130

10.2.2  设备模拟器框架  131

10.3  作为插件式服务的模拟设备  131

10.3.1  模拟安全气囊  131

10.3.2  模拟GPS  133

10.4  运行模拟设备  134

10.5  总结  135

第11章 可扩展的用户界面  136

11.1  Crust  136

11.1.1  Crust shell  136

11.1.2  Crust工具  137

11.2  紧急情况处理  138

11.2.1  创建可插拔的用户界面  138

11.2.2  重构紧急情况处理业务逻辑  139

11.2.3  紧急情况处理用户界面  140

11.2.4  运行用户界面  141

11.3  车载气候系统和音响系统  142

11.3.1  车载气候系统与音响设备  142

11.3.2  空调和音响屏幕  144

11.3.3  运行用户界面  144

11.4  OSGi应用模型  145

11.5  导航和地图  148

11.5.1  谷歌地球集成  148

11.5.2  地图支持  151

11.5.3  应用可扩展性和导航支持  152

11.5.4  运行用户界面  152

11.6  总结  154

第12章 动态配置  155

12.1  跟踪场景  155

12.2  安装跟踪代码  156

12.2.1  Core Tracking Bundle  156

12.2.2  后台跟踪bundle  157

12.2.3  客户端跟踪bundle  157

12.3  运行基本的跟踪场景  158

12.4  配置  159

12.4.1  OSGi的管理控制  159

12.4.2  客户端跟踪bundle  159

12.4.3  运行可配置的Toast  161

12.4.4  具备持久化配置的运行  162

12.5  总结  162

第13章 Web门户  163

13.1  门户  163

13.2  PortalServlet  164

13.3  使用服务进行操作查询  165

13.4  声明门户操作  168

13.5  白板模式的利与弊  170

13.6  总结  170

第14章 使用p2进行系统开发  171

14.1  Equinox p2 简介  171

14.1.1  架构  172

14.1.2  p2元数据——可安装的单元  172

14.1.3  组件  173

14.1.4  仓库  173

14.1.5  模式  174

14.1.6  指挥者  174

14.1.7  引擎  174

14.2  细化Toast结构  174

14.2.1  使用特性定义产品  175

14.2.2  后台特性  175

14.2.3  客户端特性  177

14.2.4  重构小结  180

14.3  编写一个配置器  180

14.3.1  配置器  181

14.3.2  配置后台  184

14.3.3  后台小结  184

14.4  增加一个Web部署页面  184

14.4.1  创建动作  185

14.4.2  管理动作  185

14.4.3  安装卸载动作  186

14.4.4  安装配置UI  186

14.5  导出、运行以及配置  186

14.5.1  引入一个p2仓库  186

14.5.2  运行Toast后台  189

14.5.3  创建并配置汽车  190

14.6  客户端动态部署  191

14.7  总结  192

第三部分 进阶篇

第15章 声明式服务  194

15.1  声明式服务模型  194

15.2  常见场景  195

15.2.1  最简单的组件  195

15.2.2  引用服务  197

15.2.3  提供服务  198

15.2.4  引用和提供服务  199

15.2.5  立刻激活组件  201

15.2.6  白板模式  202

15.2.7  工厂组件  207

15.3  启动和调试DS应用  213

15.4  PDE工具  214

15.5  总结  216

第16章 扩展  217

16.1  扩展注册  217

16.2  扩展点  219

16.3  扩展  221

16.4  高级扩展主题  222

16.4.1  扩展ID  222

16.4.2  命名扩展和匿名扩展  222

16.4.3  扩展工厂  223

16.5  扩展注册机制的生命周期  223

16.6  动态扩展的应用场景  224

16.6.1  场景一:没有缓存  225

16.6.2  场景二:缓存扩展  225

16.6.3  场景三:缓存对象  227

16.7  服务与扩展  229

16.8  扩展注册的神话  231

16.9  总结  231

第17章 日志  232

17.1  日志服务规范  232

17.1.1  日志级别  232

17.1.2  记录日志  233

17.1.3  读取日志  233

17.1.4  监听日志  234

17.2  在Toast中使用LogService  234

17.3  使用LogReaderService  237

17.4  Toast的LogUtility类  239

17.5  Equinox的LogService实现  240

17.6  总结  242

第18章 HTTP支持  243

18.1  HttpService  243

18.2  注册和注销Servlet  245

18.3  声明式HTTP内容注册  248

18.4  使用Jetty  248

18.5  HTTP上下文和JAAS集成  249

18.5.1  基于HTTP的认证和登录  249

18.5.2  运行具备安全机制的客户端  252

18.6  疑难解答  253

18.6.1  BindException  253

18.6.2  HttpService在监听哪个端口  253

18.7  总结  254

第19章 服务器端  255

19.1  服务器端和OSGi  255

19.2  在Web应用中嵌入Toast后台系统  257

19.2.1  更新产品  257

19.2.2  Web应用的Root文件  259

19.2.3  构建Web应用  261

19.2.4  运行Web应用  262

19.2.5  疑难解答  264

19.2.6  参数说明  265

19.3  OSGi中的远程服务  265

19.3.1  Eclipse通信框架  266

19.3.2  远程服务  266

19.3.3  分布式Toast  266

19.3.4  远程服务主机  267

19.3.5  远程服务客户端  268

19.3.6  服务发现  269

19.3.7  运行分布式系统  270

19.4  总结  271

第20章 发布工程  272

20.1  什么是PDE构建  272

20.2  build.properties bundle  273

20.2.1  控制属性  274

20.2.2  使用自定义构建脚本  275

20.3  创建构建器  275

20.3.1  调整PDE构建的目标  276

20.3.2  build.properties  276

20.4  运行构建器  279

20.5  调整构建  282

20.5.1  自定义构建脚本  282

20.5.2  仓库和附加依赖项  283

20.5.3  从SCM(软件配置管理)系统中提取内容  283

20.5.4  获取map文件  285

20.5.5  自动替换版本号  286

20.5.6  设定版本号  286

20.5.7  定位和放置根目录文件  287

20.6  构建附加特征  288

20.6.1  创建特征构建器  288

20.6.2  build.properties  288

20.6.3  运行特征构建  290

20.7  构建WAR包  291

20.8  总结  291

第四部分 参考篇

第21章 动态性的最佳实践  294

21.1  动态性与你  294

21.2  Toast的动态性  295

21.3  动态性的挑战  296

21.4  动态性意识  297

21.4.1  对象处理  298

21.4.2  bundle监听器  299

21.5  扩展者模式和BundleTracker  300

21.6  动态性启用  300

21.7  启动和停止的动态性  302

21.7.1  启动级别  303

21.7.2  正确使用服务  304

21.7.3  关闭也不总是易事  304

21.8  总结  305

第22章 整合代码库  306

22.1  bundle形式的JAR  306

22.2  采用注入的方式进行bundle化  307

22.3  通过包装的方式进行bundle化  309

22.4  通过引用的方式进行bundle化  310

22.5  使用bnd进行bundle化  312

22.6  解决类加载问题  312

22.6.1  Class.forName()  312

22.6.2  与上下文类加载器有关的问题  316

22.6.3  管理JRE类  317

22.6.4  序列化  318

22.7  总结  318

第23章 高级主题  319

23.1  Equinox控制台  319

23.2  OSGi中的角色  322

23.3  bundle的形态  323

23.4  片段  325

23.5  单例  327

23.6  bundle生命周期  328

23.6.1  生命周期状态  328

23.6.2  BundleActivator  329

23.6.3  激活器的弊端  330

23.6.4  激活器的使用  330

23.7  bundle激活策略  331

23.8  控制bundle启动  332

23.8.1  持久化启动  332

23.8.2  启用激活策略  333

23.8.3  osgi.bundles  333

23.9  类加载  334

23.9.1  类查找算法  334

23.9.2  声明导入和导出  335

23.9.3  导入包与需要的bundle  335

23.9.4  可选性  336

23.9.5  use指令  336

23.9.6  再导出  337

23.9.7  x-internal和x-friends  337

23.9.8  引导代理  337

23.10  配置和运行Equinox  338

23.10.1  config.ini  338

23.10.2  可执行程序  339

23.11  数据区  341

23.12  总结  343

第24章 声明式服务引用  344

24.1  组件XML模式v1.0.0  344

24.1.1  声明XML的命名空间和模式  344

24.1.2  元素  345

24.1.3  元素  347

24.1.4  元素  347

24.1.5  元素  348

24.1.6  元素  349

24.1.7  元素  349

24.1.8  元素  349

24.2  组件的生命周期  351

24.2.1  满足组件的配置  351

24.2.2  组件的激活、注销与修改  353

24.2.3  访问引用服务  355

24.2.4  组件的即时性  357

24.2.5  组件属性  357

24.3  总结  359

资源截图:

OSGi与Equinox 创建高度模块化的Java系统