OSGi コンポジット・バンドル

コンポジット・バンドルは、バンドルを集合体にグループ化して、動作を一貫性のあるものにします。 コンポジット・バンドルには、バンドルが含まれるか、あるいはワークスペースまたはターゲット・プラットフォームの外部のバンドルへの参照が含まれます。 コンポジット・バンドルを使用すると、特定のバージョンの共有バンドルのセットが、確実に一貫性のある動作をするようになります。

コンポジット・バンドル・アーカイブ (CBA) は、共有バンドルを集合体にまとめます。CBA には、OSGi バンドルを含めるか、内部バンドル・リポジトリーでホストされている参照バンドルを含めることができます。共有バンドルのセット間の動作を確実に整合させたい場合に、CBA を作成します。CBA を使用すれば、バンドルのセットを特定のバージョンでアプリケーションにワイヤリングすることができます。

CBA は .cba ファイル拡張子の付いたアーカイブ・ファイルです。 このアーカイブ・ファイルには、複合マニフェスト META-INF/COMPOSITEBUNDLE.MF が含まれています。これは CBA、およびオプションでリポジトリーにシードする OSGi バンドルを定義します。バージョン範囲でバンドルを定義する EBA とは対照的に、CBA が含むあるいは参照するバンドルは、厳密なバージョンで定義されています。

コンポジット・バンドルは、ランタイムの内部バンドル・リポジトリーにインストールされます。 CBA に直接 OSGi バンドルが含まれる場合、それらのバンドルは、個別にアップロードされたかのようにリポジトリーにインストールされます。さらに、CBA もバンドル・リポジトリーに追加されます。CBA が OSGi バンドルを参照する場合は、それらのバンドルは、内部バンドル・リポジトリーになければなりません。

CBA が内部バンドル・リポジトリーにインストールされると、そのバンドルは、アプリケーションの解決時にバンドルを使用するすべてのアプリケーションで使用可能になります。必要なパッケージまたはサービスをバンドルと CBA のどちらからでも同じバージョンで使用できる場合、 プロビジョニング・プロセスは CBA からそのパッケージまたはサービスを選択します。

CBA とエンタープライズ・バンドル・アーカイブ (EBA) ファイルとの違いは以下のとおりです。

OSGi コンポジット・バンドル・マニフェスト・ファイル

このファイルのメタデータには、以下の重要なプロパティーが含まれています。
Manifest-Version
マニフェスト・ファイルのバージョンを記述します。
CompositeBundle-ManifestVersion
コンポジット・バンドルのバージョンを記述します。
Bundle-Name
人が読むことのできるコンポジット・バンドルの名前を提供します。
この値を指定しない場合、デフォルト値は、コンポジット・バンドルのシンボル名になります。
Bundle-SymbolicName
フレームワーク内のコンポジット・バンドルを一意的に識別します。これを指定しても、Bundle-Name ヘッダーが必要であることに変わりはありません。
Bundle-Version
コンポジット・バンドルのバージョンを記述し、コンポジット・バンドルの複数のバージョンを同じフレームワーク・インスタンスで同時にアクティブにできるようにします。
CompositeBundle-Content
コンポジット・バンドル内のバンドルおよびバンドル・フラグメントのリスト。すべてのバンドルおよびフラグメントは、デプロイメントで使用可能でなければならず、cba ファイル内に含まれているか、ローカル・バンドル・リポジトリー内に存在しなければなりません。バンドルおよびフラグメントは、厳密なバージョン番号がなければなりません。コンテンツのバージョンが異なる同一のコンポジット・バンドルが必要な場合、個別のバージョンのコンポジット・バンドルを、それぞれの使用に合わせて 1 つのバージョンとして作成する必要があります。
書式は、コンマ区切りのモジュール宣言のリストで、各モジュール宣言では、以下の書式を使用します。
<module identifier>;<directives>;<attributes>
CompositeBundle-Content ヘッダーには以下の属性があります。
version
モジュールのバージョンは、バージョン範囲に OSGi 構文を使用して指定します。バージョンは、例えば "[1.0.0,1.0.0]" のように、正確な範囲で指定する必要があります。
Import-Package
バンドルの解決のために OSGi Framework で使用されるバンドルの外部依存関係を宣言します。各パッケージの特定のバージョンまたはバージョン範囲を宣言できます。
このプロパティーを使用して、バンドルを使用してランタイムからインポートする任意のパッケージの名前を指定します。 バンドルが必要とするパッケージをこのプロパティーで指定しない場合、バンドルのロード時に NoClassDefFound 例外を受け取る可能性があります。
注: パッケージを含むバンドルの Export-Package プロパティーにインポート (Import-Package を使用) するパッケージを指定する必要もあります。
Export-Package
バンドル外部で可視のパッケージを宣言します。ここで宣言されないパッケージは、バンドル内でのみ可視となります。
このプロパティーを使用して、バンドルを使用してランタイムにエクスポートするパッケージの名前を指定します。 このプロパティーの他のバンドルに必要なパッケージを指定しない場合、従属バンドルが解決しない可能性があります。
CompositeBundle-ExportService

複合バンドル内に存在し、複合バンドルの外部で使用するためにエクスポートできるサービスを 識別するサービス・インターフェース名とオプション・フィルターのリスト。 エクスポート対象のサービスが実装するインターフェースは、 それらのインターフェースが複合バンドルの外部で可視になっている場合には 複合バンドルの外部で使用できます。

書式は、コンマ区切りのサービスのリストで、サービス・インターフェース名、その後に属性またはディレクティブが続く形式になります。CompositeBundle-ExportService ヘッダーには、以下の属性があります。
filter
OSGi サービス・フィルター。
CompositeBundle-ImportService

複合バンドルの外部から複合バンドルのコンテンツが使用する サービスを識別するサービス・インターフェース名とオプション・フィルターのリスト。 そのようなサービスは、ランタイムで少なくとも 1 つ存在する必要があります。

書式は、コンマ区切りのサービスのリストで、サービス・インターフェース名、その後に属性またはディレクティブが続く形式になります。CompositeBundle-ImportService ヘッダーには、以下の属性があります。
filter
OSGi サービス・フィルター。
トピックのタイプを示すアイコン 概念のトピック
インフォメーション・センターのご利用条件 | フィードバック

タイム・スタンプ・アイコン 最終更新: May 29, 2014 10:20

ファイル名: ccba.html