2015-05-09 96 views
0

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

重新启动这两个捆绑包之后Bundle'B'找不到捆绑'A'公开的服务。在这个阶段,如果我执行命令 osgi:ls,我会看到OSGI服务暴露于捆绑'A'。当我执行的OSGi:LS-U,我不认为这束“B”是使用束曝光服务“A”

我得到了2的办法解决这个问题

  1. 在这个阶段,如果我只重新启动捆绑'B',然后捆绑'B'发现 由捆绑'A'暴露的OSGI服务。重新启动包不明显 官方的解决办法:)
  2. 捆绑“B”,而进口OSGi服务,如果加基数 为0:1之后我没有找到任何问题。但我不能这样做,因为通过捆绑暴露服务 “A”是强制性的捆绑 “B”的一些功能

谁能告诉我为什么我观察这种行为,我该如何解决呢? ?

+0

您是否使用spring:osgi来使用和公开服务? – Shinchan

回答

0

注意到这可能发生在bundle B在正常弹簧扩展程序之外创建其应用程序ctx时发生。例如,软件包B根据外部事件创建应用程序ctx,应用程序ctx导入从软件包A导出的osgi服务。如果使用spring-dm导出/导入osgi服务,则可以使用ServiceTracker,而不是BundleActivator

+0

有了更多的代表,[你将能够标记像这样的重复问题](http://stackoverflow.com/privileges/comment)。在此之前,将链接发布为答案并不是很理想,并且通常会被删除。 –