




免费预览已结束,剩余5页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、概述 在上文中讲到,Equinox包括核心框架,标准服务实现,面向J2EE的应用,新的部署更新框架及一些其他的研究方向。本文主要针对Equinox实现的OSGi核心框架及Equinox OSGi运行环境的搭建过程进行详细讲述。 用户在阅读下文时,应具有基本的Java编程及打包的概念并对OSGi标准的构成有一定的了解,理解OSGi框架及Bundle的概念。 2、OSGi核心框架 从OSGi核心框架示意图可以看到,OSGi核心框架主要包括模块层,生命周期层,服务层及安全层组成。完整的OSGi核心框架实现,还包括包管理服务(Package Admin)、启动层次服务(Start Level)、条件许可管理(Conditional Permission Admin)、权限管理(Permission Admin)及URL处理服务(URL Handlers)等框架服务。 关于OSGi核心框架的详细介绍请参考OSGi标准规范。 3、Equinox的OSGi Framework实现 Equinox的OSGi框架实现包含在org.eclipse.osgi插件项目中。在发布的Eclipse环境中,用户可以在Eclipse安装目录下的plugins目录中找到该插件。该插件一般以 org.eclipse.osgi_.jar的JAR文件形式打包。由于是从Eclipse3.0以前版本迁移到OSGi核心的缘故,目前的Equinox OSGi 实现中包含的代码非常繁杂。 在org.eclipse.osgi项目源代码中用户可以看到除了OSGi接口及框架实现外,还包括adaptor接口及默认的adaptor (defaultAdaptor),eclipse adaptor(eclipseAdaptor)实现,控制台实现(console),附加服务扩展(supplement),Bundle组件解析 (resolver)和Bundle JAR文件校验等功能。 在实际使用中,用户使用该Jar文件即可将OSGi框架运行起来(参考下文OSGi运行环境的搭建)。作为一个产品级的应用,往往存在很多系统级的参数可供用户进行配置以调整系统的运行行为而满足不同环境的要求。同样,Equinox运行环境也提供了大量的运行参数以供用户选择配置。配置Equinox运行环境参数的方式主要有两种,一种是使用JVM环境变量;另一种方式是使用Equinox的配置文件(config.ini)。 用户在获取到org.eclipse.osgi_.jar文件后,可以尝试以命令行的方式启动该Jar文件。该Jar文件的入库主类是:org.eclipse.core.runtime.adaptor.EclipseStarter。 java -jar org.eclipse.osgi_3.3.1.R33x_v20070828.jar 用户会发现该程序执行后立即退出,控制台上没有任何输出。这是因为不存在拥有可持续运行的代码功能,框架启动后即退出主线程。下文中,我们会给出OSGi运行环境搭建的详细过程。 4、搭建Equinox OSGi运行环境 4.1 原始的OSGi环境 从Eclipse官方网站下载Equinox OSGi框架。将其下载到c:equinox目录中。本文中使用的Equinox版本为3.3.1。直接从命令行运行该jar文件时程序执行后会立即退出,为了更好的了解Equinox OSGi框架的特点,我们在运行时添加JVM参数osgi.console。如下图所示: 执行java -Dosgi.console -jar org.eclipse.osgi_3.3.1_R33x_v20070828.jar 后,系统给出osgi命令输入提示。输入ss命令后回车,用户可以看到上图所示Framework is launched.的信息。同时,下方显式了系统启动的Bundle列表,id列为该Bundle在OSGi运行环境中的唯一运行标识,State列为该Bundle当前的状态,Bundle列显示了该Bundle组件的SymbolicName。 此时,OSGi框架已经处于运行状态。 Equinox OSGi Console提供了很多命令用于与OSGi框架交互,用户可以输入任何非OSGi Console的内部命令字符,控制太将显示Equinox Console提供的所有命令。如下下图所示: 执行services命令,用户可以看到当前OSGi框架中发布的所有的服务信息。4.2 以运行参数方式向OSGi环境中部署Bundle下载Equinox SDK,将plugins目录下的org.eclipse.osgi.services_3.1.200.v20070605.jar文件拷贝到C:equinox目录下。修改命令行运行参数如下: java -Dosgi.console -Dosgi.bundles=org.eclipse.osgi.services_3.1.200.v20070605.jar-jar org.eclipse.osgi_3.3.1_R33x_v20070828.jar执行该命令,系统运行结果如下图所示: 从运行结果可以看出,JVM参数-Dosgi.bundles= org.eclipse.osgi.services_3.1.200.v20070605.jar将 org.eclipse.osgi.services组件部署到了OSGi运行环境中。此时,该组件的状态为RESOLVED,即该组件被框架解析但没有启动。如果用户希望组件在加载的同时启动该组件,可以修改上述参数为: -Dosgi.bundles=org.eclipse.osgi.services_3.1.200.v20070605.jar2:start。 2指明该组件的启动级别,:后的start标明该组件在加载后启动。按修改后的参数重新执行命令输出结果如下图所示: 从上图可以看出,部署的org.eclipse.osgi.services组件在加载后被OSGi框架启动,其状态显示为ACTIVE。4.3以配置文件方式向OSGi环境中部署Bundle 从上述部署Bundle的方式看出,当部署多个Bundle时,使用JVM参数配置方式是不可取的。Equinox OSGi支持从配置文件中读取加载的Bundle,下面我们演示如何使用配置文件部署多个Bundle。 将Equinox SDK中plugins目录下的org.eclipse.osgi.util_3.1.200.v20070605.jar文件拷贝到C:equinox目录下。 Equinox OSGi提供了环境变量osgi.configuration.area,该变量指明了配置文件config.ini的存储路径。下面我们在C:equinox目录下添加config.ini文件,并在该文件中添加如下内容: osgi.bundles=org.eclipse.osgi.services_3.1.200.v20070605.jar2:start, org.eclipse.osgi.util_3.1.200.v20070605.jar 修改OSGi框架启动命令行为: java -Dosgi.console -Dosgi.configuration.area=.-jar org.eclipse.osgi_3.3.1_R33x_v20070828.jar执行上述命令后的输出结果如下图所示:5、使用Eclipse Launcher启动Equinox OSGi 熟悉Eclipse IDE环境的用户会注意到3.2版本(包括3.2)以前Eclipse安装目录下存在eclipse.exe和startup.jar两个文件,用于启动 Eclipse运行环境。从3.3版本开始,Equinox将startup.jar拆分为两个不同的Bundle(Fragment)放置在了 plugins目录下。用户可以从Equinox站点下载Launcher。下载后的3.3.1发布版本的Launcher包括下面两个组件: org.eclipse.equinox.launcher_1.0.1.R33x_v20070828.jarorg.eclipse.equinox.launcher.win32.win32.x86_1.0.1.R33x_v20070828 目录 在进行下述操作之前,我们需要调整C:equinox的目录结构,在该目录下添加configuration和plugins两个目录,将所有的Bundle组件(包括目录)转移到plugins目录下;将config.ini文件转移到configuration目录下,将Launcher包中的eclipse.exe文件拷贝到C:equinox目录下。此时的目录结构如下图所示:plugins目录下的内容如下图所示:修改命令行OSGi框架启动命令为: eclipse.exe -console -noexit执行该命令后,在弹出的控制台中输入ss命令,输出结果如下:5.1使用eclipse.ini文件 除了从命令行传入eclipse.exe使用的运行参数外,用户也可以配置与eclipse.exe的文件同名的ini文件存放eclipse.exe运行所需要的参数。用户应将该ini文件放置在eclipse.exe所在的文件目录下。我们在C:equinox目录下添加eclipse.ini文件,在该文件中添加如下内容: -console-noexit 直接点击eclipse.exe程序图标启动Equinox OSGi运行环境。程序运行结果如下图所示: 至此,Equinox OSGi完整的运行环境已经搭建完成。如果用户希望将新的Bundle发布到该环境中,只需要修改configuration目录下config.ini文件,将新的bundle添加到osgi.bundles参数下。6、常见问题 用户在上述操作步骤中,会发现在configuration目录下生成一些错误日志文件,如果用户发现日志中出现以下内容:java.lang.IllegalStateException: Unable to acquire application service. Ensure that the org.eclipse.core.runtime bundle is resolved and started (see config.ini).at ernal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:72)at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:363)at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:176)at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)at java.lang.reflect.Method.invoke(Method.java:585)at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:508)at org.eclipse.equinox.launc
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2.2 双曲线教学设计-2025-2026学年高中数学人教A版选修1-1-人教A版2007
- 五年级体育上册 第三十四课立定跳远考核说课稿
- 职业装质量认证创新-洞察及研究
- 4.6 小小养殖场(2)(教案)-2024-2025学年一年级数学下册北师大版
- 活动2 纽扣掉了自己缝说课稿-2025-2026学年小学劳动北师大版三年级-北师大版
- 借款担保合同协议范本模板7篇
- 装修承揽合同个人5篇
- 2025-2030中国长租公寓智能家居系统选型与实施效果研究报告
- 2025-2030中国锂电池回收利用技术突破与环保效益研究
- 2025-2030中国联合办公空间降本增效措施与运营实践
- 加快建设教育强国-2025年上半年形势与政策
- 一例急性胰腺炎患者的个案护理课件
- 2024四川省水电投资经营集团有限公司员工公开招聘1人笔试参考题库附带答案详解
- 中考古文整合复习主题五治国类
- 2023陆上风电场工程退役拆除技术导则
- 新教材人教版高中英语选择性必修第四册全册各单元重点语法
- 数字货币法律挑战-全面剖析
- 体育赛事组织及管理的业务流程
- 深信服aES产品技术白皮书-V1.5
- 2024春形势与政策-铸牢中华民族共同体意识课件
- 婴幼儿回应性照护的基本策略课件
评论
0/150
提交评论