java - bundle 对处于已解决状态的 bundle 的依赖关系

标签 java osgi osgi-bundle

我只是想解决我对 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/

相关文章:

java - OSGi - 检查一组 bundle 是否可以一起启动(在运行之前)

java - 如何在运行时清理 OSGi 包缓存

java - 如何将嵌套列表元素传递给 spring mvc 中的 Controller

java - 计算大根 : bigdecimal/java

java - 如何根据其符号名称检索 Bundle?

java - AEM/CQ - javax.xml.namespace 无法解析 OSGI 依赖项

java - 在 Eclipse 中使用多个 OSGi 包

java - 如何让MongoDB服务可用?

java - 如何从 GoogleSignInAccount 获取性别(以前的方法现已弃用)

java - 是否有类似 .NET 的 Java T4 之类的东西?