首页 文章

Osgi捆绑无法找到osgi服务

提问于
浏览
0

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

在我重新启动这两个捆绑包后,Bundle'B'无法找到Bundle'A'暴露的服务 . 在这个阶段,如果我执行命令osgi:ls,我看到捆绑'A'暴露的OSGI服务 . 当我执行osgi:ls -u时,我没有看到捆绑'B'正在使用捆绑'A'暴露的服务

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

  • 在此阶段,如果我只重新启动bundle 'B',那么bundle 'B'会发现Bundle 'A'暴露的OSGI服务 . 重启捆绑不明显的官方解决方案:)

  • 在捆绑'B'中,在导入osgi服务时,如果将基数添加为0:1那么我就不会't find any issue. But I cant do this as service exposed by bundle ' A ' is mandatory for some functionality in bundle ' B'

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

1 回答

  • 0

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

相关问题