一旦解决了捆绑的OSGI捆绑包的依赖关系会发生什么

时间:2017-05-24 03:12:27

标签: java dependencies osgi bundle osgi-bundle

我有一个OSGI Bundle A和Bundle B. Bundle B依赖于Bundle A.

Bundle B和Bundle A都处于活动状态。

现在我需要了解以下场景对Bundle B的影响

1)我已经停止了Bundle A,Bundle B会发生什么。

2)我已经卸载了Bundle A. Bundle B会发生什么。

3)我已经停止了Bundle A,然后我停止了Bundle B,现在我正在尝试从已安装状态解析B。

4)我已经卸载了Bundle A,然后我停止了Bundle B,现在我正在尝试从已安装的状态解析B.

有人可以回答这个问题吗?

我已经尝试使用apache Felix控制台,在上述任何一种情况下我都没有看到对B的任何影响。

有人可以帮我吗?

1 个答案:

答案 0 :(得分:0)

影响应如下:

  1. 没什么(停止与决议无关)
  2. 没有(B仍使用A导出的包,直到您执行refresh
  3. 没什么(停止与决议无关)
  4. B不应该解决 - 除非另一个包能够提供B所依赖的包。
  5. <强>更新

    在评论中,@ Ngupta要求&#34;请分享一些关于为什么B总是得到解决的解释,即使它所需的包不再存在&#34;。

    我的回答:即使您卸载了依赖关系,B也会保持处于已解决状态。但是,如果缺少依赖关系,B将不会转换为已解析状态。

    您可以通过执行refresh来强制B重新解析(并且此重新解析应该失败),这是您可以从Gogo shell执行的操作。事实上,在执行一系列安装,更新或删除操作后,您应始终执行refresh