動的コンテンツ管理

通常、バンドルをランタイム環境にインストールするには、フィーチャー・マニフェスト・ファイルの Subsystem-Content ヘッダーにバンドルをリストします。ただし、ユーザー作成フィーチャーの Subsystem-Content の一部としてユーザー作成バンドルをインストールすることで、OSGi バンドルを動的に追加したり削除したりすることもできます。 ユーザー作成バンドルは、OSGi バンドル・コンテキストを獲得して、追加のバンドルをインストールおよび制御します。

Liberty でのバンドルのインストール、開始、停止、およびアンインストール

注: 以下のセクションでは、ユーザー作成フィーチャーを UserFeatureA と呼び、ユーザー作成バンドルを FeatureBundleA と呼びます。
バンドルのインストール
以下のいずれかの方式を使用して、OSGi バンドル・コンテキスト org.osgi.framework.BundleContext を獲得する FeatureBundleA を作成できます。
  • BundleActivator インターフェース org.osgi.framework.BundleActivator を実装する。start メソッドの BundleContext パラメーターが OSGi フレームワークによって渡され、ユーザー作成バンドルは、アクティブ化されるときそのパラメーターを使用できるようになります。BundleActivator インターフェースについて詳しくは、単純なアクティベーションを使用した OSGi バンドルの開発を参照してください。
  • 別のメソッドまたはインターフェースを使用してバンドル・コンテキストにアクセスできるようにする、OSGi Declarative Services または Blueprint などの使用可能な仕様を実装する。詳しくは、『OSGi Declarative Services を使用した拡張フィーチャーの構成』および 「Blueprint バンドル」を参照してください。

FeatureBundleA がバンドル・コンテキストを獲得した後、installBundle(String location) メソッドまたは installBundle(String location, InputStream stream) メソッドを使用して、追加のバンドルをインストールできます。

動的にインストールされたバンドルは、デフォルト再始動時に以前の状態で再開します。これらのバンドルは、クリーン・スタート後には保持されないため、再インストールが必要です。詳しくは、「バンドル・キャッシング」を参照してください。

バンドルの開始
インストール済みバンドルを開始する必要がある場合、バンドルの start メソッドを呼び出す責任はインストール・バンドルである FeatureBundleA にあります。
バンドルの停止とアンインストール
ユーザー作成フィーチャー UserFeatureA がサーバー構成から削除された場合、FeatureBundleA も停止してアンインストールされます。FeatureBundleA のアンインストールにより、FeatureBundleA によってインストールされたすべてのバンドルのアンインストールが (それらがまだアンインストールされていない場合は) トリガーされます。バンドルごとに、バンドルを停止してアンインストールする org.osgi.framework.Bundle.uninstall() メソッドが呼び出されます。他の手段によって FeatureBundleA がアンインストールされた場合も、このアンインストール・プロセスが適用されます。

サーバー停止時に UserFeatureA がサーバー構成から削除された場合、UserFeatureA によってインストールされたバンドルは、次回のサーバー開始時に削除されます。バンドルの開始レベルがデフォルトから変更されていない場合、バンドルは再始動される前に削除されます。バンドルの開始レベルが変更されていた場合、バンドルは再始動後まで削除されないことがあります。

他のライフサイクル管理タスクは、org.osgi.framework.Bundle および org.osgi.framework.BundleContext インターフェースを使用して、OSGi コア仕様に従って FeatureBundleA によって行われます。

Liberty でのバンドル・キャッシング、パッケージ可視性、およびプログラミング・モデル・サポート

バンドル・キャッシング
サーバーがシャットダウンされると、現在インストールされているバンドルはすべて停止し、OSGi メタデータはバンドル・キャッシュに保持されます。デフォルト始動時、これらのインストール済みバンドルは前の状態に戻ります。クリーン・スタートの場合、FeatureBundleA によってインストールされたバンドルの永続データは削除されます。その結果、クリーン・スタート時、これらのバンドルは再開されません。UserFeatureA がサーバー構成内にまだ残っていれば、FeatureBundleA はフィーチャー・マネージャーによって再インストールされるため、このバンドルそのものは再開されます。 クリーン・スタート後に再インストールが必要なバンドルがある場合、再インストールは FeatureBundleA の責任になります。 クリーン・スタートに関する通知は行われませんが、OSGi BundleContext getBundle(String location) メソッドを使用して、バンドルがインストールされたかどうかを確認できます。
パッケージ可視性
動的にインストールされ、フィーチャー・マニフェスト・ファイルの Subsystem-Content ヘッダーにリストされていないバンドルには、以下の可視性があります。
  • 動的にインストールされたバンドルは、現在構成されているフィーチャーのセットによって提供される API および SPI パッケージをインポートできます。
  • API または SPI として宣言されていない、同じ製品拡張内の他のバンドルによってエクスポートされるパッケージは、動的にインストールされたバンドルからは不可視です。
  • 動的にインストールされたバンドルからエクスポートされたパッケージを API または SPI として宣言することはできません。
  • 動的にインストールされたバンドルからエクスポートされたパッケージのインポートに関する制約事項はありません。
プログラミング・モデルのサポート
OSGi Enterprise Specification を使用可能にするために適切なランタイム・フィーチャーが構成されている場合、動的にインストールされたバンドルは OSGi Enterprise Specification の実装を使用できます。

トピックのタイプを示すアイコン 参照トピック



タイム・スタンプ・アイコン 最終更新: Tuesday, 6 December 2016
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=rwlp_dynamic_content
ファイル名: rwlp_dynamic_content.html