关于OSGi平台版本之间兼容性的建议

时间:2010-04-06 12:12:21

标签: java osgi

假设它甚至可能,那么在不同的平台版本之间使捆绑兼容的建议是什么?特别是在R3和R4之间。

更新我的要求:

我们的想法是为当前运行OSGi R3容器的嵌入式设备开发一个Web界面,但它可以很快升级到R4(我们对此没有多少控制权)。将使用OSGi HTTP服务部署Web界面。我看到三个选项:

  • 使用R4执行应用程序,因为我看到某些Web工具包不适用于旧版本。我想设备的提供商可以在R4上部署当前的R3捆绑包而不需要太多努力(但不确定)。
  • 使用R3实现Web界面,没有现代Web工具包的好处(或推荐我一个)。
  • 使用某些R4捆绑包,但是某种方式独立于发行版,因此我们最终可以将它部署在R3或R4上。

2 个答案:

答案 0 :(得分:3)

通常,R4主要为bundle清单引入了新的头文件,R3实现忽略了这些头文件。导入/导出行为存在一些语义差异,但取决于您正在制作的捆绑类型,这些可能无关紧要。您可以使用的一种策略是简单地创建一个R3捆绑包,它仍然可以在R4框架上正常工作。当然,你会错过一些新的R4功能。

跟进:

从HttpService的角度来看,从R3到R4.2没有太大的变化。前者使用HttpService的1.1规范,后者为1.2。差异很小(规范使用API​​文档中的@since标记来解释何时引入了哪些方法)。

完全正确的R3捆绑在R4上工作。请记住,尽管在实践中您可以在R4中运行R3捆绑包时发现错误。当R4刚刚发布时,我将一个大型项目从R3移到了R4,我们遇到了很多小问题,都是我们自己的错,导致R4上的捆绑失败,而他们很高兴在R3上运行。这些主要与R4实现有关,在委托给父类加载器时通常更严格。确保在要部署它们的框架上测试捆绑包。

我想知道,你看过的网络工具包在哪些方面不适用于R3?他们依赖于HttpService 1.2吗?我想自己在R3上运行1.2并不难,或者将它连接到1.1实现。

答案 1 :(得分:1)

我从R1开发了捆绑包,它们仍然在R4框架上运行。向后兼容性是规范工作的关键点。但正如马塞尔所指出的,关于你的要求的更多细节会有所帮助。

<强>更新 您是否有业务或技术要求不能使用R4?好吧,如果你只是使用标准的HttpService实现一个基于servlet的服务,那么在将bundle移动到R4框架时不应该有任何问题。但是,您可以而且应该开始使用R4清单属性。它们在R3中被忽略,但在解决R4及更高版本中的依赖性方面非常有用。

如果您仅限于R3框架,我将始终定期并行地在R4框架上进行测试,以确保一切正常。根本没有多少努力。