Menu Close

第7章 ライフサイクル管理

7.1. バンドルのライフサイクルの状態

OSGi 環境のアプリケーションは、そのバンドルのライフサイクルの対象となります。バンドルには 6 つのライフサイクルの状態があります。

  1. インストール済み (Installed) : すべてのバンドルは、インストールされた状態で開始されます。インストールされた状態のバンドルは、すべての依存関係を解決されるまで待機し、解決されたら、バンドルが解決済み状態に切り替わります。
  2. 解決済み (Resolved) : バンドルは、以下の条件が満たされると解決済みの状態に移動します。

    • ランタイムの環境は、バンドルで指定された環境に適合するか、それ以上となります。
    • バンドルによってインポートされたすべてのパッケージは、解決済み状態であるバンドルか、現在のバンドルと同時に解決済みの状態に移行するバンドルによって公開されます。
    • 必須バンドルはすべて解決済み状態であるか、現在のバンドルと同時に解決できます。

      重要

      アプリケーションバンドルはすべて、アプリケーションを起動する前に解決済みの状態である必要があります。

      上記の条件のいずれかが満たされない場合、バンドルはインストール済み状態に戻されます。たとえば、これは、インポートされたパッケージを含むバンドルがコンテナーから削除されると発生する可能性があります。

  3. 開始 (Starting): 開始状態は、解決済み状態とアクティブ状態の間の一時的な状態です。バンドルの起動時に、コンテナーはバンドルのリソースを作成する必要があります。コンテナーは、バンドルの bundle activator の start() メソッドも呼び出します。
  4. アクティブ (Active): アクティブ状態の作業に使用できます。バンドルがアクティブ状態で行う作業は、バンドルの内容によって異なります。たとえば、JAX-WS サービスプロバイダーが含まれるバンドルは、サービスがリクエストを許可できることを示します。
  5. 停止 (Stopping): 停止状態は、アクティブ状態と解決済み状態の間の一時的な状態です。バンドルが停止すると、コンテナーはバンドルのリソースをクリーンアップする必要があります。コンテナーは、バンドルの bundle activator の stop() メソッドも呼び出します。
  6. アンインストール済み (Uninstalled): バンドルをアンインストールされると、解決済み状態からアンインストール済み状態に移行します。この状態のバンドルは、解決済み状態またはその他の状態に戻すことはできません。明示的に再インストールする必要があります。

アプリケーション開発者にとって最も重要なライフサイクル状態は開始状態および停止状態です。アプリケーションによってパブリッシュされるエンドポイントは、開始状態の間にパブリッシュされます。パブリッシュされたエンドポイントは、停止状態の間停止します。