在运行时获取已安装的OSGI包列表

Set*_*Nug 1 osgi equinox

我的应用程序从属性文件中获取类名.由这些类名表示的类可以驻留在某些未知的OSGI包中,因此为了实例化它们,我首先必须找到这些类所属的包.我正在考虑从BundleContext#getBundles获取所有已安装的bundle,这意味着我必须在AbstractUIPlugin #start中获得对BundleContext的引用.但我不确定持有对BundleContext的引用是否正确,因为它只应该在start方法中使用.因此,我需要OSGI专家提供有关获取捆绑包列表的替代方案的建议.

任何帮助将不胜感激.

问候,

Setya

Fra*_*Lee 5

这不是OSGi的真正意图.如果捆绑包有某些内容要添加到"全局"上下文中,则应注册服务.所以每个有共享内容的bundle都可以在自己的start方法中做到这一点.

然后,其他一些组件(DS,ServiceTracker,Blueprint,类似的东西)可以监听这些事件,并采取相应的行动.

这非常重要,如果您开始手动搜索所有捆绑包,则会完全失去OSGi的优势.