OSGi アーキテクチャー

OSGi サービス・プラットフォームの中核部分は、 管理されたセキュアな Java™ ベースのサービス・プラットフォームを定義します。このプラットフォームは、バンドルとして知られる拡張可能でダウンロード可能なアプリケーションの デプロイメントをサポートします。 その仕様により、セキュリティー・モデル、アプリケーション・ライフサイクル管理モデル、サービス・レジストリー、実行環境、およびモジュールが定義されます。

OSGi は、Java に対して動的モジュール・システムを定義します。中核の OSGi サービス・プラットフォーム は、階層化アーキテクチャーを持ち、各種の標準 Java プロファイルで稼働するように設計されています。OSGi によりモジュラー単位としてバンドルの概念が導入され、プラットフォーム・アーキテクチャーはデプロイメントの単位としてバンドルに基づいています。OSGi アーキテクチャーには、以下のレイヤーがあります。
実行環境レイヤー
モジュール・レイヤー
ライフサイクル・レイヤー
サービス・レジストリー・レイヤー
OSGi アーキテクチャーについて詳しくは、コア OSGi サービス・プラットフォーム仕様を参照してください。

実行環境レイヤー

実行環境レイヤーは、バンドルが稼働する Java 環境 (例えば、Java EE または Java SE) を指定します。WebSphere® Application Server で稼働する OSGi アプリケーションの場合は、 実行環境を指定する必要はありません。

モジュール・レイヤー

モジュール・レイヤーは、OSGi フレームワークがバンドルのモジュラー・アスペクトを処理する場所です。OSGi フレームワーク がバンドルを処理することを可能にするメタデータは、バンドル・マニフェスト・ファイルで設定されます。

OSGi の主な利点の 1 つは、クラス・ローダー・モデルで、これは、マニフェスト・ファイルのメタデータを使用します。OSGi には、グローバル・クラスパスはありません。バンドルが OSGi フレームワークにインストールされる場合、そのメタデータはモジュール・レイヤーによって処理され、その宣言済み外部依存関係は、他のインストール済みモジュールによって宣言されたバージョン化エクスポートに対して調整されます。 OSGi フレームワークは、マニフェストを使用して依存関係を判別し、 各バンドルの独立必須クラスパスを計算します。このアプローチは、以下の要件が満たされるようにすることによって、単純 Java クラスロードの短所を解決します。
  • 特定のバンドルによってメタデータを介して明示的にエクスポートされるパッケージだけが、インポートのために他のバンドルで可視になります。
  • 各パッケージは特定のバージョンに解決できます。
  • パッケージの複数のバージョンが異なるクライアントに対して同時に使用可能である。

ライフサイクル・レイヤー

OSGi 内のバンドル・ライフサイクル管理レイヤーを使用することで、 従属クラスが見つからないためにそれらをロードできないという、Java クラスのロードや実行時のクラスが見つかりません例外に関する問題がなくなります。インストール済みバンドルがフレームワークにデプロイされるとき、 フレームワークはまずそのすべての宣言済み依存関係を解決します。未解決の依存関係がある場合、 フレームワークはそれらの依存関係を報告し、バンドルを開始しません。

バンドル・ライフサイクルでは、次のようになります。
  • バンドルは動的で、他のフレームワークとは独立して開始および停止できます。
  • 各バンドルは、フレームワークが開始および停止イベント時に呼び出すバンドル・アクティベーターを提供できます。 バンドル・アクティベーターは、バンドル・マニフェスト内で宣言されます。

アプリケーションは通常、バンドル・アクティベーターを提供する必要はありません。 ただし、バンドルの開始時または停止時に初期化が必要な場合は、バンドル・アクティベーターを作成することができます。

サービス・レジストリー・レイヤー

OSGi 内のサービス・レジストリー・レイヤーは、本質的にサービス指向アーキテクチャー (SOA) をサポートしています。バンドルはサービス・レジストリーにサービスを公開し、他のバンドルがそれらのサービスをサービス・レジストリーからディスカバーできます。

これらのサービスは、バンドル間のコラボレーションの主要な手段になります。OSGi サービスは、Plain Old Java Object (POJO) で、カスタム・プロパティー (名前と値のペア) として保管されるオプションのメタデータが設定され、1 つ以上の Java インターフェース名の下にサービス・レジストリーに公開されます。ディスカバーする側のバンドルは、インターフェース名によってサービス・レジストリーでサービスを検索し、次にカスタム・プロパティーを使用してサービスを潜在的にフィルターに掛けることができます。

サービスは完全に動的で、通常、サービスを提供するバンドルと同じライフサイクルを持ちます。

トピックのタイプを示すアイコン 概念のトピック
インフォメーション・センターのご利用条件 | フィードバック

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

ファイル名: cosgiarchitecture.html