如何在激活捆绑包时自动激活捆绑包依赖项?

时间:2012-09-19 03:42:01

标签: dependencies osgi bundles

在看到罗伯特邓恩的OSGi Dependencies: Heaven and Hell之后,我对以下内容特别感兴趣:

  

如果您使用的是不知道ACTIVE捆绑包的解析程序   依赖关系然后你必须自己管理所有这些。同   灵活的你只需要问你需要什么,让解析器照顾好   其余的。这加快了开发生命周期并保持不变   你的脚本多余的杂乱。

正如理查德所说,使用obr可以解决解析时依赖性问题。但是,我认为如果不扫描bundle的源代码,很难解决活动时依赖项(活动bundle的依赖项自动)。

例如,如果捆绑包A使用了使用BundleContext.register方法在捆绑包B上注册的服务,那么,在激活捆绑包A时,我们怎么知道我们必须激活捆绑包B的事实呢?

1 个答案:

答案 0 :(得分:2)

整个方法背后的假设是捆绑包将提供指示其要求和功能的元数据。可以从捆绑包中的其他工件推断出一些额外信息,例如web.xml文件或声明性服务组件文件。

即使存在代码级依赖关系,也无法检测任意动态类加载 - 元数据至关重要。

编写一个可以确定捆绑包的所有可能功能和要求的程序将是一个很难的静态分析问题,而这些tend to be equivalent to the Halting Problem,即不可能。

相关问题