我只是想解决我对 bundle 停止时会发生什么以及依赖它们的 bundle 的后果的理解。
例如,如果有两个包 A 和 B。包 A 没有依赖项(除了 OSGi 框架),但导出一些包。 bundle B 从 A 导入包,然后使用其中的类,但不使用服务(如果有)。这两个包都安装在 OSGi 框架中,并将其状态报告为“Activity ”。
现在发生这种情况, bundle A 已停止(但未重新启动),因此如果我理解正确, bundle A 会转换为“已解决”状态。这是否意味着 bundle A 中的任何导出都不可用,如果是的话,当 A 可用时, bundle B 也应该停止(由框架自动停止)吗?
最佳答案
当 bundle B 启动时, bundle A 也会启动(之前)。但是,如果 bundle A 停止, bundle B 将不会停止。捆绑 B 停止的原因可能有以下三个:
- 在包 B 上调用停止
- 框架启动级别变得低于 bundle B 的启动级别
- bundle B 未解决
此外:如果在 bundle A 上调用卸载, bundle B 仍将处于 Activity 状态。原因是 bundle A 将获得“标记为删除”状态,但在有任何连接到它之前它不会被完全删除。如果在 bundle B 上调用刷新,则连接将被删除。
关于java - bundle 对处于已解决状态的 bundle 的依赖关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25581446/