osgi一小步–开发流程与学习方法

学习OSGi有一段时间了,对OSGi项目的开发流程与学习方法做个小总结,也算是自己的学习心得吧,供自己日后学习与参考。

OSGi项目开发流程

工程建立方式

基于eclipse plugin的maven工程

这种工程被eclipse原生支持,可以通过eclipse向导页创建插件工程,通过mvn命令也可以为工程加入插件的nature,但生成后的工 程有可能需要手动处理依赖关系。公司里有一个大项目就是以这种方式创建OSGi工程的,每次导入工程时,都要手动处理一下依赖关系,非常繁杂!

普通的maven project+清单文件方式

这种工程是我比较喜欢的一种,只需要创建一般的maven工程,通过mvn eclipse:eclipse生成的eclipse工程也只需要具体JavaNature即可。需要提供一个给osgi框架解析的清单文件,配置 maven-jar-plugin在打包时用给定的清单文件即可,通过手工控制bundle的依赖关系,久而久之,你会更加理解bundle的运行机制, 当然也存在一定的繁杂!

工程布局方式

最好做一下隔离,把服务接口bundle,服务实现bundle,服务消费者bundle分开,有时还需要一种bundle来承载整个系统对第三方库的依赖,暂且称为三方库依赖bundle,以下是各种bundle的解释

  • 服务接口bundle    定义系统所需要所有的接口类,供其他各bundle依赖
  • 服务实现bundle     对服务接口的实现,每种实现最好单独一个bundle,便于更新替换
  • 服务消费者bundle  服务的消费者,只应依赖于服务接口bundle,而不应触碰具体的实现bundle
  • 三方库依赖bundle   管理整个系统对第三方库的依赖,比如log4j等等,做到统一管理

部署方式

当构建好系统后,如何去部署运行呢,有以下几种方式

  • 手动install   通过osgi提供的标准命令一个个install,一个个start,非常麻烦
  • 使用auto config   通过equinox提供的bundle自动安装特定目录下的所有bundle,但仍然需要手动一个个start,也有些麻烦
  • 使用EclipseStarter方式最好   可以自己编写一个启动器,借助EclipseStarter可以更方便的启动并运行你的系统

学习方法与资料

学习方法

扫描二维码关注公众号,回复: 766964 查看本文章
  • 自己实现小demo,多多看代码,多多写代码,是王道!
  • 努力研究Equinox的执行流程,下载源代码,使用eclipse远程调试

查找资料

  • 学会使用EclipseHelper功能,这个功能可以通过Help->Help Contents打开,当你不清楚一些osgi配置项,比如osgi.clean等等,你可以通过HelpContents找到答案,这些就相当于一个大的知识库,或者相当于msdn
  • 多逛逛OSGi联盟或Equinox的网站,也可以订阅一些开发邮件组,比如osgi-dev之类的

需要看的文档

  • OSGi规范 core,可以去OSGi联盟网站下载,介绍了OSGi规范的核心组成部分
  • OSGi规范 cmpn,介绍了各种标准服务的规范,比如声明式服务规范等等

猜你喜欢

转载自marsvaadin.iteye.com/blog/1240927
今日推荐