第7章 ライフサイクル管理
7.1. バンドルのライフサイクル状態
OSGi 環境のアプリケーションは、そのバンドルのライフサイクルの影響を受けます。バンドルには 6 つのライフサイクル状態があります。
- インストール済み: すべてのバンドルはインストール済みの状態で起動します。インストール済み状態のバンドルは、すべての依存関係が解決されるのを待機し、解決されると、バンドルは解決済み状態に移行します。
解決済み: 次の条件が満たされると、バンドルは解決済み状態に移行します。
- ランタイム環境は、バンドルで指定された環境を満たすか、それを上回ります。
- バンドルでインポートされたパッケージはすべて、解決済みの状態にあるか、現在のバンドルと同時に解決済みの状態に移行できるバンドルにより公開されます。
必要なバンドルはすべて解決済みの状態であるか、現在のバンドルと同時に解決できます。
重要アプリケーションを開始する前に、アプリケーションのすべてのバンドルが解決済みの状態になっている必要があります。
上記の条件のいずれかが満たされない場合には、バンドルはインストール済み状態に戻されます。たとえば、これは、インポートされたパッケージを含むバンドルがコンテナーから削除された場合に発生する可能性があります。
-
開始: 開始状態は、解決された状態とアクティブな状態の間の一時的な状態です。バンドルが開始されると、コンテナーはバンドルのリソースを作成する必要があります。また、提供されている場合、コンテナーはバンドルのバンドルアクティベーターの
start()
メソッドも呼び出します。 - アクティブ: アクティブ状態のバンドルは作業に使用できます。アクティブ状態ででのバンドルの動作は、バンドルの内容によって異なります。たとえば、JAX-WS サービスプロバイダーを含むバンドルは、サービスが要求を受け入れる準備ができていることを指します。
-
停止: 停止状態は、アクティブ状態と解決済み状態の間の一時的な状態です。バンドルが停止すると、コンテナーはバンドルのリソースを消去する必要があります。また、提供されている場合、コンテナーはバンドルのバンドルアクティベーターの
stop()
メソッドも呼び出します。 - アンインストール済み: バンドルがアンインストールされると、解決済みの状態からアンインストール済みの状態に移行します。この状態のバンドルは、解決済みの状態またはその他の状態に戻すことはできません。明示的に再インストールする必要があります。
アプリケーション開発者にとって最も重要なライフサイクル状態は、開始状態と停止状態です。アプリケーションによって公開されるエンドポイントは、開始状態の間に公開されます。公開されたエンドポイントは、停止状態の間に停止されます。