什么是典型的OSGi生命周期?

什么是典型的OSGi生命周期?,osgi,lifecycle,Osgi,Lifecycle,在开发和部署基于OSGi的系统时,我想了解一些行业中使用的生命周期。 我主要关注的是部署阶段,在开发阶段创建了版本控制和打包包之后。特别是可能执行的测试程序和集成方法。 一个包含一些低级细节的高级帐户将非常有用。 多谢各位 您可以研究Eclipse,因为它是我所知道的最大的基于OSGi的系统之一。他们有很多关于版本控制以及如何在eclipse平台中使用测试的文档。我建议阅读或从中查看其他信息 《入门指南》介绍了一个名为GreenPages的小型web应用程序,它是从一个框架项目结构分阶段构建的。

在开发和部署基于OSGi的系统时,我想了解一些行业中使用的生命周期。
我主要关注的是部署阶段,在开发阶段创建了版本控制和打包包之后。特别是可能执行的测试程序和集成方法。
一个包含一些低级细节的高级帐户将非常有用。

多谢各位

您可以研究Eclipse,因为它是我所知道的最大的基于OSGi的系统之一。他们有很多关于版本控制以及如何在eclipse平台中使用测试的文档。

我建议阅读或从中查看其他信息

《入门指南》介绍了一个名为GreenPages的小型web应用程序,它是从一个框架项目结构分阶段构建的。最后的实现是一个模块化的多捆绑应用程序。在此过程中,单元和集成测试在Eclipse以及独立(Maven)构建中进行了演示


尽管Eclipse很大,是一个很有用的例子,但我并不认为它是典型的OSGi模块化系统,也不知道对所使用的开发过程生命周期的解释。

OSGi捆绑包可以在运行的OSGi引擎中组装在一起(无论是Equinox、Felix、dmServer等)。与其他代码一样,可能依赖于特定于平台的行为(例如仅在使用c:\style文件引用的Windows上工作的代码)、与JNI一起工作且仅对x86平台有效的代码等等。在这些情况下,OSGi不会帮助或阻碍软件测试

它可以增加复杂性的地方在于运行捆绑包的组合爆炸。与Java应用程序不同,Java应用程序可以非常愉快地在单个单片类路径上运行,而您往往要到稍后才会发现错误(例如,当尝试加载JDBC驱动程序时,ClassNotFoundException)。OSGi在这方面有一定的帮助,确保您必须至少有必要的捆绑包导出;但即便如此,有些包还是可选的,因此最终会出现同样的问题

作为OSGi绑定器,您确实需要测试:

  • 这些捆绑包实际上都启动了吗?也就是说,在安装到您最喜欢的OSGi引擎中后,start n是否正常工作?如果您拥有所有依赖项,那么它应该从已安装到已解决再到活动;如果它停留在INSTALLED中,则意味着它缺少一些依赖项
  • 您的应用程序是否需要在OSGiVM启动时启动某些捆绑包(如声明性服务或远程服务)
  • 捆绑包之间是否存在启动订单问题?它们都应该正常工作,但您可能需要测试如果Bundle A在Bundle B之前启动会发生什么

这些是在验证一组bundle相互协作时,您必须在测试中考虑的额外事项。理想情况下,您可以在OSGi VM测试中运行—这就是Eclipse的JUnit插件测试的运行方式。

如果您缩小问题范围或给出具体场景,人们(比我更合格)可能会给您一个答案?您是否试图让某人为您的论文写一章?