2015-05-09 132 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)。在此之前,將鏈接發佈爲答案並不是很理想,並且通常會被刪除。 –