【问题标题】:What is a typical OSGi life-cycle?什么是典型的 OSGi 生命周期?
【发布时间】:2008-12-17 21:52:29
【问题描述】:

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

【问题讨论】:

  • 也许如果你缩小问题范围或给出具体情景,人们(比我更有资格)可以给你答案?
  • 你想找人写你论文的一章吗?

标签: osgi lifecycle


【解决方案1】:

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

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

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

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

在证明一组捆绑包可以相互工作时,您必须考虑测试这些额外的东西。理想情况下,您应该有可以运行的 in-OSGi VM 测试——这就是运行 Eclipse 的 JUnit 插件测试的方式。

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

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

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

      【讨论】:

        猜你喜欢
        • 2016-12-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-10-06
        • 2012-12-08
        • 2018-04-15
        相关资源
        最近更新 更多