Osgi捆绑无法找到osgi服务

时间:2015-05-09 05:16:21

标签: apache-felix osgi-bundle

我在Jboss Fuse中运行了2个osgi包(比如A和B)。我正在使用菲利克斯。 &#39; A&#39;捆绑包暴露了一种服务,即&#39; B&#39;捆绑使用。当我部署这两个捆绑包时没有问题。当我执行osgi:ls -u时,我看到那个包&#39; B&#39;正在使用捆绑销售的服务&#39; <&#39;

我将这两个捆绑包重新捆绑在一起后捆绑了&#39; B&#39;无法找到Bundle&#39; A&#39;所暴露的服务。在这个阶段,如果我执行命令 osgi:ls,我看到通过bundle&#39; A&#39;暴露的OSGI服务。当我执行osgi:ls -u时,我不会看到该捆绑包&#39; B&#39;正在使用捆绑销售的服务&#39; <&#39;

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

  1. 在此阶段,如果我只重新启动捆绑包&#39; B&#39;然后捆绑&#39; B&#39;认定 Bundle&#39; A&#39;暴露的OSGI服务。重启捆绑包并不明显 官方解决方案:)
  2. 在捆绑&#39; B&#39;中,在导入osgi服务时,如果添加基数 因为0:1然后我没有发现任何问题。但我不能这样做作为服务 通过捆绑“A&#39;对于bundle中的某些功能是必需的 &#39; B&#39;
  3. 有谁能告诉我为什么我会观察这种行为以及如何解决它? ?

1 个答案:

答案 0 :(得分:0)

注意到当捆绑包B在正常的spring扩展程序进程之外创建其app ctx时,可能会发生这种情况。例如,bundle B根据外部事件创建app ctx,app ctx导入从bundle A导出的osgi服务。如果使用spring-dm导出/导入osgi服务,请使用ServiceTracker via { {1}}而不是。