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

时间:2008-12-17 21:52:29

标签: osgi lifecycle

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

3 个答案:

答案 0 :(得分:1)

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

它可以增加复杂性的地方在于运行捆绑包的纯粹组合爆炸。与可以在单个单片CLASSPATH上运行的Java应用程序不同,您往往不会在以后发现错误(例如,在尝试加载JDBC驱动程序时类似于ClassNotFoundException)。 OSGi在这方面有所帮助,确保您必须至少拥有捆绑包的必需包导出;但即使这样,一些软件包也可以是可选的,因此最终会遇到同样的问题。

作为OSGi捆绑包,您确实需要测试:

  • 这些捆绑包实际上是否全部启动,即在安装到您喜欢的OSGi引擎后,启动 n 是否正常工作?如果你已经拥有了所有的依赖项,那么它应该从INSTALLED到RESOLVED变为ACTIVE;如果它在INSTALLED中保持不变,则意味着它缺少一些依赖性
  • 当OSGi VM启动时,您的应用程序是否需要启动某些捆绑包(如声明服务或远程服务)?
  • 捆绑包之间是否存在启动订单问题?他们应该只是工作但你可能想测试如果Bundle A在Bundle B之前启动会发生什么

在认证一组捆绑包以便彼此协作时,您需要考虑的其他内容。理想情况下,您可以运行in-OSGi VM测试 - 这就是Eclipse的JUnit插件测试的运行方式。

答案 1 :(得分:0)

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

答案 2 :(得分:0)

我建议您阅读Getting Started Guide for dmServer或查看SpringSource.org dmServer site中的其他信息。

“入门指南”介绍了一个名为 GreenPages 的小型Web应用程序,该应用程序是从骨架项目结构分阶段构建的。最终实现是一个模块化的多包应用程序。在此过程中,单元和集成测试在Eclipse中展示,以及独立(Maven)构建。

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