OSGI入门

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

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

1 / 23
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功