OSGi バンドル

OSGi バンドルは、Java™ コード、リソース、およびバンドルとその依存関係を示すマニフェストを含む Java アーカイブ・ファイルです。 バンドルは、アプリケーションの配置の単位です。

バンドルのタイプ
OSGi バンドル・マニフェスト・ファイル
バンドル・ライフサイクル

バンドルのタイプ

アプリケーション・バンドル
アプリケーション・バンドルは、アプリケーション用に特に作成するバンドルです。 これらのバンドルは、インスタンス固有または隔離されており、共有されるようにはなっていません。これらのバンドルは、アプリケーション・マニフェストの Application-Content ヘッダーで参照されます。
共有バンドル
共有バンドルは、アプリケーション固有ではありません。共有バンドルからの 1 つのパッケージ・インスタンスは、多くのアプリケーションで使用することができます。共有バンドルは、 アプリケーション・バンドルからパッケージまたはサービスをインポートすることはできません。 アプリケーションの共有バンドルは、 アプリケーションに直接含まれるのではなく、参照によって指定される必要があります。
共有バンドルは、さらに使用バンドルおよびプロビジョン・バンドルに細分されます。
使用バンドル
使用バンドルは、少なくとも 1 つのパッケージをアプリケーション・バンドルに提供する共有バンドルです。使用バンドルは、アプリケーション・マニフェストの Use-Bundle ヘッダーで参照されます。
プロビジョン・バンドル
プロビジョン・バンドル は、少なくとも 1 つのパッケージまたは サービスをアプリケーション・バンドル、使用バンドル、または別のプロビジョン・ バンドルに提供する共有バンドルです。プロビジョン・バンドルは、アプリケーション・マニフェストで参照されず、アプリケーションは、各プロビジョン・バンドルの要件がどのように満たされるかを認識していません。
OSGi バンドルは、以下の任意の場所に保管することができます。
  • アプリケーションのエンタープライズ・バンドル・アーカイブ (EBA) ファイル。
  • サーバーの内部 OSGi バンドル・リポジトリー。
  • 外部 OSGi バンドル・リポジトリー。

アプリケーション・バンドル は、EBA ファイル またはリポジトリーのいずれかに保管できます。 共有バンドルは、リポジトリーに保管されます (そうでなければ共有できません)。

リポジトリーからバンドルを取得するプロセスは、プロビジョニングと言います。プロビジョニングのため、バンドルでは以下の用語が使用されます。
被参照バンドル
被参照バンドルは、アプリケーション・マニフェストで参照され、リポジトリーに保管されるバンドルです。
従属バンドル
従属バンドルは、アプリケーション・マニフェストで参照されず、アプリケーション・マニフェストで、または他の従属バンドルによって参照される バンドルによって使用されるバンドルです。

EBA ファイルに直接含まれないアプリケーション・バンドル は、インスタンス固有の被参照バンドル です。使用バンドルは、共有される被参照バンドルです。プロビジョン・バンドルは、共有される従属バンドルです。

OSGi バンドル・マニフェスト・ファイル

OSGi バンドル JAR ファイルには JAR マニフェスト・ファイルが含まれます。 このファイルには、OSGi フレームワークがバンドルのモジュラー・アスペクトを処理できるようにするメタデータが含まれます。

以下のコードは、バンドル・マニフェスト・ファイル META-INF/MANIFEST.MF のコンテンツの例です。
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: MyService bundle
Bundle-SymbolicName: com.sample.myservice
Bundle-Version: 1.0.0
Bundle-Activator: com.sample.myservice.Activator
Import-Package: org.apache.commons.logging;version="1.0.4"
Export-EJB: ExampleBean
Export-Package: com.sample.myservice.api;version="1.0.0"
このマニフェスト・ファイル内のメタデータには、以下のキー・プロパティーが含まれます。
Bundle-Version
バンドルのバージョンを記述し、バンドルの複数のバージョンを同じフレームワーク・インスタンスで同時にアクティブにできるようにします。
Bundle-Name
人間が理解できるバンドルの名前を提供します。
Bundle-SymbolicName
フレームワーク内のバンドルを一意的に識別します。これを指定しても、Bundle-Name ヘッダーが必要であることに変わりはありません。
Bundle-Activator
バンドル・ライフサイクルの変更についてフレームワークから通知を受け取ります。 このプロパティーは、org.osgi.framework.BundleActivator インターフェースを実装するクラスを指定します。
Import-Package
バンドルの解決のために OSGi Framework で使用されるバンドルの外部依存関係を宣言します。各パッケージの特定のバージョンまたはバージョン範囲を宣言できます。 この例のマニフェスト・ファイルでは、org.apache.commons.logging パッケージがバージョン 1.0.4 以降で必要とされます。
このプロパティーを使用して、バンドルを使用してランタイムからインポートする任意のパッケージの名前を指定します。 バンドルに必要なパッケージをこのプロパティーで指定しない場合、バンドルのロード時にコンパイル・エラーを受け取る可能性があります。
注: パッケージを含むバンドルの Export-Package プロパティーにこのパッケージを指定する必要もあります。
制約事項: バンドル・マニフェスト・ファイルで Import-Package プロパティーを使用してワークスペースまたはターゲット・プラットフォーム内にないバンドルへのバンドル依存関係を宣言する場合、エディターはこの依存関係にエラーのマークを付けます。この制限を回避するには、依存関係として宣言するバンドルがすべて確実にワークスペースにあるようにするか、クイック・フィックスを使用してターゲット・プラットフォームにバンドルを追加します。クイック・フィックスを使用するには、「マーカー」ビューに切り替えてからエラー・マーカーを右クリックして「クイック・フィックス」を選択します。
重要: MANIFEST.MF ファイルでバンドル依存関係を指定するとき、プロパティー Require-bundle ではなく Import-Package を使用してください。 Require-bundle を使用してバンドル依存関係を指定すると、アプリケーションはデプロイされません。
依存関係を宣言するためのより柔軟な方法は、Import-Package を使用することです。
  • バンドルでは必要ではないがその従属バンドルに含まれている パッケージに対する不必要な依存関係が追加されないため、機能の発生元であるバンドルにではなく、必要とする機能に 対して依存関係を宣言することができます。
  • 宣言されたパッケージのバージョンまたはバージョン範囲を指定でき、 その結果、異なるバージョンのバンドルでの変更に対応する必要がありません。
Export-EJB:
EJB プロジェクトが OSGi バンドルに変換されると、Export-EJB セクションがマニフェストに追加されます。 このセクションは、公開する EJB のリストを指定するために使用します。 このセクションを手動で編集することにより、または変換対象の EJB プロジェクトを右クリックして「OSGi」 > 「EJB エクスポートの管理」を選択することにより、EJB を追加することができます。
Export-Package
バンドル外部で可視のパッケージを宣言します。ここで宣言されないパッケージは、バンドル内でのみ可視となります。
このプロパティーを使用して、バンドルを使用してランタイムにエクスポートするパッケージの名前を指定します。 このプロパティーの他のバンドルに必要なパッケージを指定しない場合、従属バンドルが解決しない可能性があります。

バンドル・ライフサイクル

フレームワークはバンドルのライフサイクルを管理します。バンドルをインストールして実行すると、バンドルはさまざまな状態になります。

考えられるバンドルの状態は以下のとおりです。
INSTALLED
バンドルはインストールされていますが、バンドルのすべての依存関係が 満たされているわけではありません。バンドルには、現在インストールされているバンドルによってエクスポートされていないパッケージが必要です。
RESOLVED
バンドルがインストールされており、バンドルの依存関係が満たされていますが、稼働していません。 バンドルが始動済みであり、バンドルの依存関係のすべてが満たされている場合、バンドルはこの状態をスキップします。
STARTING
バンドルが始動中になる一時的な状態。
ACTIVE
バンドルが稼働しています。
STOPPING
バンドルが停止中になる一時的な状態。
UNINSTALLED
バンドルがフレームワークに存在しなくなります。
トピックのタイプを示すアイコン 概念のトピック
インフォメーション・センターのご利用条件 | フィードバック

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

ファイル名: cbundles.html