2012-05-08 29 views
1

我正在構建一個基於OSGi的Web應用程序,它只包含兩個包。在其中之一中,我從流程引擎加載流程實例。每個流程實例都應該與最初分配的其他包的特定版本相對應。動態設置OSGi導入版本限制?

例如,我想在Bundle A中加載一個流程實例,並使用版本1.0中來自bundle B的包使用它。之後,我將獲得另一個流程實例,並使用版本2.0中來自軟件包B的包使用它。

您是否看到任何方式來實現此功能?

非常感謝您提前! Johannes

回答

2

軟件包A只能在任何給定位置暴露於單個版本的軟件包。因此,除了可能僅使用反射之外,Bundle A不能使用由Bundle B的不同版本導出的相同包的2個版本。

或者,您的意思是Bundle B的2個版本以不同方式實現相同的包。然後,Bundle A可以從Bundle B的兩個版本中看到不同的實現對象,因爲它們看起來與Bundle A的接口類型相同。如果是這種情況,那麼OSGi服務是Bundle B發佈Bundle B的最佳方式A使用。

+0

感謝您對導入和建議的澄清。隨着Bundle B的每個新版本都應該有新的服務任務實現,所以我會嘗試使用OSGi服務爲Bundle A提供它們。謝謝! – Johannes