1、OSGI入门,作者:李金峰,概述(一),1.开放服务网关协议 (Open Services Gateway initiative),简称OSGi,为网络服务定义了一个标准的、面向服务的计算环境,为用户提供了开放的、面向服务组件的、易于部署的编程模型。 2.OSGi 是由 1999 年成立的 OSGi 联盟提出的一个开放的服务规范,后来 Eclipse 组织注意到了 OSGi 的优点,决定将 Eclipse3.0 及后续版本的插件体系结构基于 OSGi 来实现,并专门成立了一个子项目 Equinox 来实现 OSGi R4 规范,把 Equinox 作为 Eclipse 的底层运行平台。,概述(
2、二),3.OSGi框架是一个微核结构的容器,所有的模块都需要运行在容器范围内,在OSGi中所有模块的部署都必须以Bundle的方式来进行部署。OSGI官方称是面向服务的系统架构,也可以理解为面向组件的架构,系统中每一个组件或者一个模块称之为bundle,这也是OSGI里最基本的单元。 4.OSGi框架提供了一套完善的机制用于管理和控制组件(Bundle)、服务(Service)的生命周期,以及组件和服务在其生命周期内的交互。 5.Bundle其实就是一个jar文件,这个jar文件和普通的jar文件唯一不同的地方就是META-INF目录下的MANIFEST.MF文件的内容。,Hollo Worl
3、d!(一),1.本例用eclipse开发,本人用的是myeclipse 10,内自带了osgi的框架Equinox。 2.本例用的jdk版本为jdk1.6.,Hollo World!(二),建立一个 plug-in 工程,点击FileNewPlug-in Project,如果找不到可以点击FileNewOther.Plug-in Project,Hollo World!(三),填写工程名,这里一般以包名+工程名的方式命名。选择an OSGI frameowork单选按钮,在其右侧选择standard 然后点击Next,Hollo World!(四),填写工程名,这里一般以包名+工程名的方式命名
4、。选择an OSGI frameowork 然后点击Next,Hollo World!(五),这里Provider指的是供应商 点击Finish,Hollo World!(六),这里不要任何模板,钩掉缺省选项 点击Next,Hollo World!(七),Hollo World!(八),Eclipse 会在工程名下建立相同路径的 Java Package,其中包含了 Activator 类,插件的配置信息也都放在 MANIFEST.MF 文件中,将来我们相当多的工作都是在其中完成。,Hollo World!(九),编辑 Activator.java,输入 hello world 语句,代码如下
5、:,Hollo World!(十),我们可以看到每个 Activator 实际都是实现了 BundleActivator 接口,此接口使 Activator 能够接受框架的调用。在框架启动后,启动每个 bundle 的时候都会调用每个 bundle 的 Activator 。 注意:bundle 的 Activator 必须含有无参数构造函数,这样框架才能使用 Class.newInstance() 方式反射构造 bundle 的 Activator 实例。,Hollo World!(十一),执行:选择 Run Run Configurations ,进入运行菜单,在 OSGi framewo
6、rk 中右键点击选择 new 一个新的 OSGi 运行环境,如图:,Hollo World!(十二),右键OSGI Framework,点击New,如图:,Hollo World!(十三),点击Deselect All去掉默认勾选。选择刚刚建的工程com.li.helloworld,Hollo World!(十四),点击Deselect All去掉默认勾选。选择刚刚建的工程com.li.helloworld,Hollo World!(十五),勾选org.eclipse.osgi组建,Hollo World!(十六),点击Validate Bundles,验证依赖插件是否有问题,Hollo World!(十七),控制台出现Hello World! 通过 OSGi 控制台,您可以对系统中所有的 bundle 进行生命周期的管理,另外也可以查看系统环境,启动、停止整个框架,设置启动级别等等操作。如图 ,键入 SS 就可以查看所有 bundle 的状态,Hollo World!(十八),左菜单中选择MANIFEST.MF文档, 在右下选项中选择MANIFEST.MF,如图:,Hollo World!(十九),谢 谢!,