OSGi アプリケーションのプロビジョニング
エンタープライズ・バンドル・アーカイブ (EBA) ファイルをアセットとしてインポートするとき、または、新しいバンドル・バージョンを使用するようにアセットを更新するとき、または、複合バンドルを拡張として構成単位に追加するとき、すべての必要な OSGi バンドルが使用可能であることがプロビジョニングによって保証されます。 OSGi アプリケーションは、外部リポジトリーからのバンドル、内部リポジトリーからのバンドル、および EBA ファイルまたは複合バンドル・アーカイブ (CBA) ファイル内に含まれるバンドルを使用できます。
OSGi アプリケーションが定式化される時に、開発者は、アプリケーションが直接使用するすべてのバンドルをリストするアプリケーション・マニフェストを作成します。 このバンドル・セットから、開発者は、構成されたローカル・リポジトリーおよびリモート・バンドル・リポジトリーから他のバンドルがプロビジョンされることを予期して、新規に作成されたバンドルのみを EBA ファイルにパッケージすることを選択する場合があります。 同様に、複合バンドルの開発者は、複合バンドルが使用する すべてのバンドルをリストした複合バンドル・マニフェストを作成します。 このバンドルのセットから、開発者は、複合バンドルで直接使用できるように 一部のバンドルをパッケージにすることを選択し、構成済みバンドル・リポジトリーから他のバンドルが プロビジョンされることを予期する場合があります。
- EBA ファイル。
- CBA ファイル。
- 内部バンドル・リポジトリー。
WebSphere® Application Server インストール済み環境には、1 つの内部バンドル・リポジトリーがあります。 OSGi バンドルまたは複合バンドルをこの内部リポジトリーに追加できます。 1 つのバンドルが、多くの OSGi アプリケーションによって使用されている場合、そのバンドルを内部リポジトリーに追加するようにしてください。
- 外部バンドル・リポジトリー。
アプリケーションが必要とするバンドルが格納されている 1 つ以上の外部バンドル・リポジトリーの場所を指定できます。 外部バンドル・リポジトリーの実装方法によっては、外部バンドル・リポジトリーを使用して、サービスをプロビジョンしたり、複合バンドルまたは複合バンドルによって参照されるバンドルを保管したりすることができない場合があります。
- 被参照バンドル。 EBA ファイルまたは複合バンドルには直接格納されておらず、アプリケーション・マニフェストまたは複合バンドル・マニフェストで参照されるバンドルです。
- 従属バンドル。 アプリケーション・マニフェストまたは複合バンドル・マニフェストでは参照されないが、アプリケーション・マニフェスト内または 複合バンドル・マニフェスト内で参照されるバンドルによって必要とされるバンドルです。 そのようなバンドルに対しては、複数レベルの依存関係がある場合があります。 すなわち、ある従属バンドル自体が、別の従属バンドルに依存している場合があります。
EBA アセットのプロビジョニングは、OSGi アプリケーションが最初に インポートされるときと、後でアセットが更新されるときに発生します。 アセットは解決されます。すなわち、構成要素アプリケーション・バンドルの場所が、適切なバージョンで、EBA ファイル、内部バンドル・リポジトリー、および指定された外部バンドル・リポジトリーのセットのコンテンツを使用して決定されます。 同様に、複合バンドルを拡張として構成単位に追加するときも、プロビジョニングが 発生します。 適切なバージョンの構成要素バンドルの場所は、複合バンドルおよび使用可能なバンドル・リポジトリーのコンテンツを 使用して決定されます。
プロビジョニングでは、依存関係のチェックも行い、関連するバンドル・リポジトリーからそうした依存関係の場所を特定します。 依存関係には、インポートされたパッケージ、必要なバンドル、サービス、およびパーシスタンス・プロバイダーが含まれます。 プロビジョニング・プロセスでは、バンドルの Blueprint XML ファイル内の <service>、<reference>、 および <reference-list> エレメントを検査して、サービスの依存関係を検出します。 バンドルが内部バンドル・リポジトリーに追加されるとき、または EBA または CBA ファイルで提供されるときに、Blueprint XML ファイルがないかバンドルがスキャンされます。 アプリケーション・コードによって OSGi サービスがプログラムで直接使用される場合、プロビジョニングでは、このサービス依存関係が Blueprint XML ファイルにも指定されていない限り、この依存関係を検出しません。
バンドルが、可能なバージョンの範囲でアプリケーション・マニフェストで参照される場合、プロビジョニングにより、その範囲のバージョンでバンドルの場所が特定されます。 指定されたバンドルの複数のバージョンが使用可能な場合、アプリケーションによる解決が選択する新しいバージョンによって妨げられない限り、指定された範囲内の最新のバージョンが選択されます。
必要なパッケージまたはサービスが、バンドルと複合バンドルのどちらからでも同じバージョンで使用可能な場合、プロビジョニング・プロセスは、そのパッケージまたはサービスを複合バンドルから選択します。
- バンドルを EBA または CBA ファイルに追加する。
- 内部バンドル・リポジトリーにバンドルをアップロードする。
- 外部バンドル・リポジトリーでバンドルを見つけ、そのリポジトリーの場所を指定する。
すべてのバンドルのダウンロードが完了したら、アセットを ビジネス・レベル・アプリケーションに追加したり、OSGi 構成単位を更新したりして、 ビジネス・レベル・アプリケーションで新しい構成を使用するようにできます。