【问题标题】:Osgi bundle cannot find osgi serviceOsgi bundle 找不到 osgi 服务
【发布时间】:2015-07-20 02:32:48
【问题描述】:

我有 2 个 osgi 包(比如 A 和 B)在 Jboss Fuse 中运行。我正在使用费利克斯。 “A”包公开了“B”包使用的服务。当我部署这两个捆绑包时,没有问题。当我执行 osgi:ls -u 时,我看到包“B”正在使用包“A”公开的服务

在我一起重新启动这 2 个捆绑包后,捆绑包“B”找不到捆绑包“A”公开的服务。在这个阶段,如果我执行命令 osgi:ls,我看到捆绑“A”公开了 OSGI 服务。当我执行 osgi:ls -u 时,我没有看到 bundle 'B' 正在使用 bundle 'A' 公开的服务

我有 2 个解决这个问题的方法

  1. 在这个阶段,如果我只重新启动捆绑“B”,那么会找到捆绑“B” Bundle 'A' 公开的 OSGI 服务。重启捆绑不明显 官方解决方案:)
  2. 在 bundle 'B' 中,在导入 osgi 服务时,如果添加基数 0:1 那么我没有发现任何问题。但我不能将其作为服务 对于 bundle 中的某些功能,bundle 'A' 公开是强制性的 'B'

谁能告诉我为什么我会观察到这种行为以及如何解决它? ?

【问题讨论】:

  • 你使用 spring:osgi 来消费和暴露服务吗?

标签: apache-felix osgi-bundle


【解决方案1】:

请注意,当捆绑 B 在正常的 spring 扩展程序进程之外创建其应用程序 ctx 时,可能会发生这种情况。例如,bundle B 基于外部事件创建了一个 app ctx,app ctx 导入了从 bundle A 导出的 osgi 服务。如果您使用 spring-dm 导出/导入 osgi 服务,请使用 ServiceTracker via BundleActivator而是。

【讨论】:

猜你喜欢
  • 2011-06-18
  • 2013-01-08
  • 1970-01-01
  • 2019-01-03
  • 1970-01-01
  • 2013-06-14
  • 1970-01-01
  • 2012-08-26
  • 1970-01-01
相关资源
最近更新 更多