1

是否可以在带有扩展点的 OSGi 应用程序中同时运行两个版本的扩展?

这就是我想要完成的:
我有一个扩展点 Foo 和一个符号名称 Bar 和版本 1.0.0 的模块插入到扩展点并在模块 A 和模块 B 中运行(即实例化)。然后我安装一个新的带有错误修复、symbolicName Bar 和 1.0.1 版的扩展包。我只想在模块 B 中运行这个新版本,所以模块 A 仍然使用 Bar v1.0.0,模块 B 现在使用 Bar v1.0.1。

据我所见,这是不可能的,因为扩展需要是单例的,所以不能有相同符号名称的两个版本。所以我们当前的解决方案是让符号名称也包含版本:symbolicName Bar_1_0_0 和symbolicName Bar_1_0_1。这样做我们可以独立并同时运行每个模块中的每个版本,因为它们在技术上是不相关的包,只是碰巧插入到同一个扩展点。

但是,将版本放在符号名称中似乎是错误的做法。这可以在不更改符号名称的情况下完成吗?我错过了什么吗?

4

1 回答 1

2

你没有错过任何东西。Eclipse 扩展系统 (plugin.xml) 仅适用于单例包,这意味着多个版本不能同时处于活动状态。要拥有非单例扩展,您必须使用不同的扩展系统。我知道 OSGi 服务可以处理这种情况。可能想看看 OSGi 规范。

于 2013-05-30T19:20:17.653 回答