我正在构建一个基于OSGi的Web应用程序,现在只包含两个包。在其中一个中,我正在从流程引擎加载流程实例。每个流程实例都应该与最初分配给它的另一个捆绑包的特定版本相对应。
例如,我想在Bundle A中加载一个流程实例,并使用版本1.0中捆绑包B的包来处理它。之后,我将获得另一个流程实例,并使用版本2.0中捆绑包B的包来使用它。
您认为有什么方法可以实现此功能吗?
非常感谢您提前! 约翰内斯
答案 0 :(得分:2)
Bundle A只能在任何给定点暴露给包的单个版本。因此,除了可能只使用反射之外,Bundle A不能使用由不同版本的Bundle B导出的同一个包的2个版本。
或者,你的意思是Bundle B的2个版本以不同的方式实现相同的包。然后Bundle A可以看到来自Bundle B的2个版本的不同实现对象,因为它们看起来与Bundle A的接口类型相同。如果是这种情况,那么OSGi服务是Bundle B为Bundle发布这些对象的最佳方式A要使用。