`
ferreousbox
  • 浏览: 284682 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

在RCP中应用OSGI DS

阅读更多

    在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是否被激活:)

3
0
分享到:
评论
2 楼 cuiran 2010-01-11  
您好,你这种方法能否在eclipse里面使用?
1 楼 cuiran 2010-01-04  
Hi,您好,按你说的做了后,弹出两个框一个是DOS框,另一个是OSGI的框。怎么把DOS框去了不让其弹出。谢谢。我的邮箱是cuiran2001@163.com

相关推荐

Global site tag (gtag.js) - Google Analytics