在RCP中应用OSGI的DS(Declarative Service)服务,特别要注意各个Bundle(插件)的启动顺序,其中org.eclipse.equinox.ds_1.0.0.v20080427-0830.jar(DS服务的Bundle)这个Bundle要比其他需要DI Service的Bundle启动要早,同时又要比它依赖的Bundle启动要迟。equinox的DS插件依赖如下:
1.org.eclipse.osgi.services_3.1.200.v20071203.jar
2.org.eclipse.equinox.util_1.0.0.v20080414.jar(该插件又依赖1)
所以启动DS时如果设置了启动级别就要确保上面两个Bundle已经启动了,我们以一个RCP导出的conf.ini配置文件为例,其部分内容如下:
osgi.bundles.defaultStartLevel=4
osgi.bundles=org.eclipse.equinox.common@2:start,org.eclipse.update.configurator@3:start,
org.eclipse.core.runtime@start,org.eclipse.equinox.ds@3:start
我们可以看到默认的Bundle的启动级别为4,我们这里把ds的Bundle的启动级别设置为3,这样可以保证在其他Bundle启动前启动DS服务,同时其依赖的两个Bundle也会在它之前启动:-)
另外,如果某个Bundle使用DS发现无法引用service,请确保该bundle已经启动了(处于Activate状态),因为只有启动了的Bundle才可以激活Component。调试RCP程序,可以在导出的RCP程序的eclipse.exe(根据你的product的配置不同而不同)所在的目录建立startup.bat文件,内容如下:
eclipse -console
保存后双击运行该批处理即可以看到OSGI的命令提示符,然后就可以通过命令来查看各个bundle的基本信息和状态了,可以通过ss来查看指定的bundle是否已经启动了,从而来判断component是否被激活:)
分享到:
相关推荐
12章)系统讲解了Eclipse RCP应用开发的基础知识、Eclipse RCP软件产品各个组成部分的构建方法,以及Eclipse RCP扩展的使用和扩展点的开发,掌握这些技术知识的读者将能构建一个结构完整的Eclipse RCP软件,并解决...
NULL 博文链接:https://bill-xing.iteye.com/blog/1175993
比较好的OSGi学习教程,分享给大家,简单易学...。。。
基于 OSGI 的 RCP 测试 2 Standard
RCP&OSGI;
基于 OSGI 的 RCP 测试 1 Equinox
非常好的一本JAVA RCP入门实战的书,兼顾理论和实战。
eclipse rcp应用系统开发方法与实战源代码.zip
Eclipse Rich Client Platform (RCP) 的目标是在各种不是集成开发环境 (IDE) 的最终用户应用程序中使用 Eclipse。随着 Eclipse V3.1 的发布,创建 RCP 应用程序变得容易。本教程将指导您一步步创建自己的 RCP 应用...
ECLIPSE+RCP应用系统开发方法与实战 PDF 比较清晰 有目录 本人在网上找了N久一直没找到,在taobao上买的。 所以收了5分,不要说我太黑哦。
Java RCP企业应用快速开发框架,详细内容请访问www.soyframework.com
eclipse icons,用来开发rcp桌面应用程序
Eclipse RCP应用系统开发方法与实战
RCP中文入门教程,RCP中文入门教程,RCP中文入门教程,RCP中文入门教程
Eclipse RCP 应用系统开发方法与实战
基于Eclipse RCP的复合应用,IBM中国研发中心的人写的
Eclipse RCP 应用系统开发方法与实战 源代码
一个在RCP 的View中显示JFreeChart报表的小例子,所需要用到的Jar包都已经包含在里面 没有分的也可以去我的博客看看,也有相关的代码。
资源名称:OSGi相关框架学习资料资源目录:【】EclipseRCP与SpringOSGi技术详解与最佳实践【】osgi.core.javadoc-5.0.0【】OSGi_R4_Spec_zh_cn_origional【】OSGi原理与最佳实践【】OSGi原理与最佳实践的源码【】...