假设它甚至可能,那么在不同的平台版本之间使捆绑兼容的建议是什么?特别是在R3和R4之间。
更新我的要求:
我们的想法是为当前运行OSGi R3容器的嵌入式设备开发一个Web界面,但它可以很快升级到R4(我们对此没有多少控制权)。将使用OSGi HTTP服务部署Web界面。我看到三个选项:
答案 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框架上进行测试,以确保一切正常。根本没有多少努力。