OSGi アプリケーション

OSGi アプリケーションは、バンドルのセットをグループ化して、首尾一貫したビジネス・ロジックを提供します。 アプリケーションは、Web 対応バンドルやパーシスタンス使用可能バンドルなど、さまざまなバンドル・タイプで構成できます。

1 つの OSGi アプリケーション内のバンドルは、他の OSGi アプリケーションで定義されているバンドル、サービス、またはパッケージとは、それらが両方のアプリケーションで明示的に共有されていない限り分離されます。OSGi アプリケーションは、直接 OSGi バンドルを含めるか、OSGi バンドル・リポジトリーでホストされているバンドルを参照することができます。

アプリケーション 内の OSGi バンドルは、他の OSGi アプリケーションとサービスを共有できます。OSGi アプリケーションが外部サービスおよび参照を生成する場合、これらは、アプリケーション・マニフェストに宣言することによって、明示的に公開されます。同様に、OSGi アプリケーションが消費する外部サービスおよび参照は、アプリケーション・マニフェスト内に宣言されます。また、OSGi アプリケーションは、メタデータを使用して、その構成要素バンドルの一部をシステム内で共有できるようにします。このような共有によって、システムのメモリー所要量およびリソース所要量を少なくすることができます。

OSGi アプリケーションには、以下のものが含まれています。
アーカイブ・コンテンツ
アプリケーション・マニフェスト
デプロイメント・マニフェスト

アーカイブ・コンテンツ

アーカイブ・コンテンツは、Application-Content ヘッダーがアプリケーション・マニフェストに定義されているかどうかに応じて、2 とおりに使用されます。
  • Application-Content ヘッダーが定義されていない場合、アーカイブ・コンテンツは OSGi アプリケーション・コンテンツを定義します。
  • Application-Content ヘッダーが定義されている場合は、アーカイブ・コンテンツはバンドルをプロビジョンできる初期バンドル・リポジトリーを定義します。特定のバージョンのバンドルが管理対象リポジトリーにインストールされて、また、アプリケーション・アーカイブにもバンドルが含まれている場合、アーカイブのバンドルが使用されます。

アプリケーション・マニフェスト

アプリケーション・マニフェスト META-INF/APPLICATION.MF は、アプリケーション・レベルのモジュール性を記述します。デフォルトでは、アプリケーション・マニフェストが宣言されていない場合、アプリケーション・コンテンツは OSGi アプリケーションに含まれる OSGi バンドルのセットであり、外部サービスまたは参照は生成も消費もされません。

アプリケーション・マニフェストには、以下のヘッダーを入れることができます。
Application-SymbolicName

Java に類似するパッケージ記法を使用した、OSGi アプリケーションの固有のシンボル名。

Application-Version

バンドル・バージョンに OSGi 構文を使用した、アプリケーションのバージョン。

Application-Name

アプリケーションの名前。

Application-ImportService

バンドルの解決のために OSGi Framework で使用されるバンドルの外部依存関係を宣言します。各サービスの特定のバージョンまたはバージョン範囲を宣言できます。

アプリケーションが消費する外部サービス用のフィルターのセット。アプリケーション・マニフェストには、サービスが要求するクラスが含まれている必要があります。このヘッダーが指定されていない場合、要求されたサービスはインポートされません。

要求するサービスを、先頭にサービス・インターフェース名、そのあとに属性またはディレクティブが続く、コンマ区切りのリストで指定します。
<サービス ID>;<ディレクティブ>;<属性>
例えば、以下のようになります。
test.it;filter="some_filter"
Application-ImportService ヘッダーには、以下の属性があります。
filter
OSGi サービス・フィルター。
Application-ExportService

バンドル外部で可視のサービスを宣言します。ここで宣言されないサービスは、バンドル内でのみ可視となります。

アプリケーションが生成する外部サービス用のフィルターのセット。このヘッダーが指定されていない場合、要求されたサービスはエクスポートされません。

エクスポートするサービスを、先頭にサービス・インターフェース名、そのあとに属性またはディレクティブが続く、コンマ区切りのリストで指定します。
<サービス ID>;<ディレクティブ>;<属性>
例えば、以下のようになります。
test.it;filter="some_filter"
Application-ExportService ヘッダーには、以下の属性があります。
filter
OSGi サービス・フィルター。
Use-Bundle

少なくとも 1 つのパッケージをアプリケーション・バンドルに提供する共有バンドル。

Application-Content リスト内のバンドルのパッケージ依存関係を満たすために 使用するバンドルまたはコンポジット・バンドルのリスト。Use-Bundle リスト内の各バンドルまたは コンポジット・バンドルは、Application-Content リスト内の少なくとも 1 つのバンドルに対して、 少なくとも 1 つのパッケージを提供する必要があります。これらのバンドルは、実行時に共有バンドル・スペースにプロビジョンされます。

Use-Bundle ヘッダーは 不要なことが多いものの、これがあると便利な場合もあります。 このヘッダーは、共有が可能になるレベルを制限するために使用できます。 例えば、1 つのアプリケーションが、パッケージ・インポートで、 既にテスト済みの同じバンドルを確実に使用するように指定できます。 あるいは、2 つのアプリケーションがパッケージ・インポートで同じバンドルを 確実に使用するように指定できます。アプリケーション・レベルでの制限を設定すると、 バンドルを柔軟に保つことができます。

Application-WebModules

アプリケーションに含まれる非 OSGi 動的 Web プロジェクトのリスト。

このヘッダーは、OSGi 標準の一部ではありません。

Application-Content
アプリケーションに含まれる、コンポジット・バンドル、バンドル・フラグメント、およびバンドルと、OSGi バージョン仕様の許容範囲のリスト。
ヒント: Application-Content リストにバンドル・フラグメントが含まれる場合、フラグメントのホスト・バンドルが含まれていることを確認します。
書式は、コンマ区切りのモジュール宣言のリストで、各モジュール宣言では、以下の書式を使用します。
<module identifier>;<directives>;<attributes>

通常、モジュール ID はバンドルのシンボル名です。バンドルされていないリソースを参照するために、 モジュール ID は、OSGi アプリケーション・ルートへの相対パスです。

Application-Content ヘッダーには、以下の属性があります。
version
モジュールのバージョンは、バージョン範囲に OSGi 構文を使用して指定します。アプリケーションの最小バージョン、およびそれに続けて、アプリケーションをアップグレードできる最大バージョンを指定します。例えば、"[1.0.0,2.0.0)" は、バージョン 1.0.0 からバージョン 2.0.0 まで (バージョン 2.0.0 は含まない) のすべてのバージョンを意味します。

Application-Content ヘッダーは、ビジネス・サービスを構成する重要なアプリケーションを定義しますが、アプリケーション内の全バンドル・リストを定義するわけではありません。 コンテンツにリストされているバンドルが、アプリケーションに含まれていないパッケージを使用する場合、 依存関係分析が実行され、欠落したすべてのバンドルが組み込まれます。 これらのバンドルはアプリケーション外部のサービスを提供できず、それらにセキュリティーを適用することができません。このメカニズムを使用して組み込まれるバンドルは共有されます。

デプロイメント・マニフェスト

OSGi アプリケーションがインストールされるときに、アプリケーション・マニフェストは、アプリケーションを構成するバンドルを指定します。いくつかのバンドルに複数のバージョンを指定することができます。

デプロイメント・マニフェスト META-INF/DEPLOYMENT.MF は、依存関係分析後に必要なバンドルを含む、アプリケーションを構成するすべてのバンドルを指定します。デプロイメント・マニフェストは、アプリケーション内で使用される各バンドルの実際のバージョンを指定します。これは Enterprise Bundle Archive (EBA) アセットがインストールされる際に 自動的に作成され、アプリケーション・サーバーが開始されるたびにアプリケーションを構成するバンドルが同じであることを保証します。

EBA では、単一の OSGi アプリケーションとしてデプロイされ、他の OSGi アプリケーションとは分離される OSGi バンドルのセットが定義されます。EBA ファイルは、.eba ファイル拡張子の付いた単一のアーカイブ・ファイルです。 EBA ファイルには、アプリケーション・モジュールのセットかアプリケーション・マニフェストのいずれか、またはその両方が含まれています。

アプリケーションのインストール後、EBA アセットを構成することによって、バンドルのバージョンを更新できます。

デプロイメント・マニフェストには、以下のヘッダーが含まれます。
Application-SymbolicName
Java に類似するパッケージ記法を使用した、アプリケーションの固有のシンボル名。これは、アプリケーション・マニフェストの Application-SymbolicName 値に一致します。
Application-Version
バンドル・バージョンに OSGi 構文を使用した、アプリケーションのバージョン。これは、アプリケーション・マニフェストの Application-Version 値に一致します。
Deployed-Content

使用されるバンドルのシンボル名と正確なバージョンの、コンマ区切りのリスト。

このリストには、アプリケーション・マニフェストの Application-Content ヘッダーにリストされているすべてのバンドルと、依存関係分析によりインポートされるバンドルが含まれます。 変換されたバンドルのシンボル名を使用して、非 OSGi モジュール・タイプが含まれます。

Deployed-Content ヘッダーには、以下のディレクティブがあります。
deployed-version
バージョンに OSGi 構文を使用して指定される、バンドルの正確なバージョン。
トピックのタイプを示すアイコン 概念のトピック
インフォメーション・センターのご利用条件 | フィードバック

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

ファイル名: ceba.html