Menu Close

1.4. OSGi サービス

1.4.1. 概要

OSGi サービスは、名前と値のペアとして定義されたサービスプロパティーを持つ Java クラスまたはサービスインターフェースです。サービスプロパティーは、同じサービスインターフェースでサービスを提供するサービスプロバイダー間で区別されます。

OSGi サービスは、そのサービスインターフェースでセマンティック的に定義され、サービスオブジェクトとして実装されます。サービスの機能は、サービスが実装するインターフェースによって定義されます。したがって、異なるアプリケーションが同じサービスを実装できます。

サービスインターフェースは、実装ではなく、インターフェースをバインドして、バンドルが対話できるようにします。サービスインターフェイスは、実装の詳細をできるだけ少なくして指定する必要があります。

イベント通知

サービスインターフェースは、バンドルによって作成されたオブジェクトによって実装されます。バンドルは以下を行うことができます。

  • サービスの登録
  • サービスの検索
  • 登録状態が変化したときに通知を受け取る

OSGi フレームワークはイベント通知メカニズムを提供するため、サービスレジストリーの変更が発生したときにサービスリクエスターが通知イベントを受信できます。これらの変更には、特定サービスの公開または取得、およびサービスが登録、変更、または登録解除された場合が含まれます。

サービス呼び出しモデル

バンドルがサービスを使用する場合は、サービスを検索し、通常の Java 呼び出しとして Java オブジェクトを呼び出します。そのため、サービスの呼び出しは同期され、同じスレッドで実行されます。より非同期の処理のためにコールバックを使用できます。パラメーターは Java オブジェクト参照として渡されます。XMLの場合のように、マーシャリングや中間の正規形式は必要ありません。OSGi は、サービスが利用できない問題の解決策を提供します。

OSGi フレームワークサービス

独自のサービスに加えて、OSGi フレームワークは、フレームワークの操作を管理するために以下の任意のサービスを提供します。

  • パッケージ管理サービス - 共有パッケージの状態を調べて、管理エージェントは Java パッケージ共有を管理するポリシーを定義できます。また、管理エージェントはパッケージを更新でき、必要に応じてバンドルを停止および再起動することもできます。このサービスは、エクスポートバンドルがアンインストールまたは更新されたときに、管理エージェントが共有パッケージに対して意思決定できるようにします。

    このサービスでは、最終更新以降に削除または更新されたエクスポート済みパッケージを更新する方法や、特定のバンドルを明示的に解決する方法も提供します。このサービスは、実行時にバンドル間の依存関係を追跡することもできるため、アップグレードによって影響を受ける可能性のあるバンドルを確認できます。

  • 開始レベルサービス: 管理エージェントを有効にして、バンドルの開始および停止順序を制御します。サービスは、各バンドルに開始レベルを割り当てます。管理エージェントはバンドルの開始レベルを変更し、フレームワークのアクティブな開始レベルを設定して、適切なバンドルを開始および停止します。このアクティブな開始レベル以下の開始レベルを持つバンドルのみがアクティブになります。
  • URL Handlers サービス - URL スキームとコンテンツハンドラーで Java ランタイムを動的に拡張し、任意のコンポーネントが追加の URL ハンドラーを提供できるようにします。
  • Permission Adminサービス - OSGi フレームワーク管理エージェントを有効にして、特定のバンドルのパーミッションを管理し、すべてのバンドルのデフォルトを提供します。バンドルには、特権コードの実行が許可されていることを確認するために使用される単一のパーミッションのセットを含めることができます。ポリシーをその場で変更したり、新たにインストールしたコンポーネントに新しいポリシーを追加したりすることで、パーミッションを動的に操作できます。ポリシーファイルは、バンドルで実行できることを制御するために使用されます。
  • Conditional Permission Admin サービス - パーミッションがチェックされたときに特定の条件が true または false の場合に適用できるパーミッションを使用して、パーミッション管理サービスを拡張します。これらの条件により、パーミッションが適用されるバンドルの選択が決まります。パーミッションは、設定直後にアクティベートされます。

OSGi フレームワークサービスは、OSGi Alliance Web サイトの リリリース 4 ダウンロードページ から利用できる OSGi Service Platform Release 4 仕様の個別の章で詳細に説明されています。

OSGi Compendium サービス

OSGi フレームワークサービスに加えて、OSGi Alliance は任意の標準化された compendium サービスのセットを定義します。OSGi compendium サービスは、ロギングや設定などのタスクの API を提供します。これらのサービスは、OSGi Alliance Web サイトの リリース 4 ダウンロードページ から利用できる OSGi Service Platform, Service Compendium で説明されています。

Configuration Admin compendium サービスは、設定情報を永続化し、対象者に分散する中央ハブのようなものです。Configuration Admin サービスは、デプロイされたバンドルの設定情報を指定し、アクティブな場合にバンドルがそのデータを受信するようにします。バンドルの設定データは名前と値のペアの一覧です。「Apache Karaf のアーキテクチャー」 を参照してください。