第 7 章 生命周期管理

7.1. 捆绑包生命周期状态

OSGi 环境中的应用程序受到其捆绑包的生命周期约束。捆绑包有六个生命周期状态:

  1. Installed - 所有捆绑包都以安装的状态启动。安装状态中的捆绑包会等待所有依赖项解决,一旦被解决,捆绑包将移到解析的状态。
  2. resolved - 在满足以下条件时,捆绑包将移到已解析的状态:

    • 运行时环境满足或超过捆绑包指定的环境。
    • 捆绑包导入的所有软件包都由捆绑包公开,这些捆绑包处于解析状态,或者可以移到与当前捆绑包相同的解析状态。
    • 所有所需捆绑包都处于解析状态,也可以与当前捆绑包同时解析。

      重要

      所有应用程序的捆绑包都必须处于解析的状态,然后才能启动应用程序。

      如果满足上述任何条件,则捆绑包将移回到安装状态。例如,当容器中删除包含导入软件包的捆绑包时,可能会发生这种情况。

  3. starting - 启动 状态是解析的状态和活跃状态之间的传输状态。启动捆绑包时,容器必须为捆绑包创建资源。容器也会在提供捆绑包时调用捆绑包的 start () 方法。
  4. Active - 处于 active 状态的捆绑包可用于工作。捆绑包在活跃状态下执行的操作取决于捆绑包的内容。例如,包含 JAX-WS 服务提供商的捆绑包表示该服务可用于接受请求。
  5. stop - 停止 状态是 active 状态和解析状态之间的传输状态。当捆绑包停止时,容器必须清理捆绑包的资源。容器也会在提供捆绑包时调用捆绑包的 stop () 方法。
  6. uninstall - 卸载捆绑包时,它会从解析的状态移到卸载的状态。处于此状态的捆绑包无法转换为解析的状态或任何其他状态。它必须明确重新安装。

应用程序开发人员最重要的生命周期状态为 start 状态和 stop 状态。应用公开的端点会在启动状态期间发布。发布的端点在停止状态期间停止。