作者:Jeff McAffer等
抛开OSGI理论等等,我们直接从环境搭建和简单事例开始。
1. 环境搭建准备
需要准备的工具或软件有:
Eclipse
Jdk
Eclipse必须要有的插件为:plug-in插件、osgi插件、equinox
可能遇到的问题:
在Eclipse中无法创建Plug-in Project则需要下载该插件,如图:
通过eclipse执行Help—>Install New Software—>选择work with 为—AllAvailable Sites—然后查下Plug-in将如图工具选中安装后重启便可以。
其他需要安装的插件都可以通过这种方法搜索安装,如osgi
2. 书本中的创建步骤
书本的例子是Toast的例子,在汽车安全气囊弹出时能被gps定位的功能,从这句需求中我们可以了解到需要实现的功能:在弹出时触发gps系统。
Osgi作为模块化的创建依据,书本中分成了两个bundle,分别是gps和airbag(安全气囊),并建立第三个bundle负责对前两个调用。这里以第三个客户端bundle为例说明创建步骤:
1、 File—>New—>Project…. 展开Plug-inDevelopment,选择Plug-in Project,然后点击New打开New Plug-in Project向导,如图:
2、 输入以上信息后点击Next,在下一个界面不要选中【Options】中的选项,然后就保存结束。
3、 建立相应的类等
4、 操作Meta-inf下的MANIFEST.MF文件,在里面建立bundle的信息,主要有:gps和airbag模块是要导出的,这样才能被客户端使用,所以要选中导出,而第三个bundle是要导入这两个模块的,所以第三个bundle不选择导出而要选择导入。
最后的MANIFEST.MF文件的结果是:
Gps的内容为:
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: Mytoast Gps
Bundle-SymbolicName: org.equinoxosgi.mytoast.dev.gps
Bundle-Version: 1.0.0.qualifier
Bundle-RequiredExecutionEnvironment: JavaSE-1.7
Export-Package:org.equinoxosgi.toast.gps
而第三个bundle的内容为:
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: Emergency
Bundle-SymbolicName: org.equinoxosgi.mytoast.client.emergency
Bundle-Version: 1.0.0.qualifier
Bundle-RequiredExecutionEnvironment: JavaSE-1.7
Import-Package: org.equinoxosgi.toast.airbag,
org.equinoxosgi.toast.gps,
org.osgi.framework;version="1.7.0"
Bundle-Activator:org.equinoxosgi.toast.client.emergency.Activator
5、 要启动这个项目则需要是先BundleActivator接口,实现该接口并更新到第三个bundle的MF文件中
6、 启动
a) 要通过配置Run—>Run Configurations—>OSGI Framework àNew 创建一个启动配置
b) 在workspace中选择自动的三个bundle,除此之外还要选中org.eclipse.osgi、org.eclipse.equinox.console、felix
如果equinox.console没有选,在控制台运行时报:
Could not findbundle: org.eclipse.equinox.console
如果felix漏选,也将报类似的错误,felix找不到之类的,根据提示选择bundle便搞定。
配置如图: