2012-05-08 30 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