私は現在、OSGi サービス、より具体的に言えば、サービス間の配線に「苦労」しています。DS、SCR の基本と、コンポーネント インスタンスがサービスを取得するための一般的な戦略を認識しています。とにかく、ここに私の問題があります:
DS に続いて、コンポーネントは、XML ファイルで提供および消費されるサービスなどを宣言します。私の場合、特定のコンポーネントの「消費/参照」サービス (コンポーネントの XML ファイルの「参照」タグで宣言されている) に関心があります。
たとえば、実行中の OSGi アプリケーションを考えてみましょう。サービス (DS) に基づいて互いに連携する一連のバンドルです。ここで、特定のバンドルを選択し、それが消費する (可能性のある) サービスへのすべての参照をクエリします。これらのサービスが現在利用可能かどうかは関係ありません。
inspect requirements *などの Apache Felix GoGo シェル コマンドを参照すると、インポートされたパッケージなどに関する情報は得られますが、消費されたサービスに関する完全な概要は得られません (-> 現在消費されているサービスとコンポーネントが待機しているサービスの両方)。
サービスの登録、変更、および登録解除に関する洞察を提供するフレームワーク API について読みましたが、明らかに、どのサービス バンドルが待機しているかに関する情報を提供していません。OSGi コア仕様に従って、これはListener Hookによって実現できます。
特定のバンドルのすべての参照されたサービスを取得するために、たとえば SCR にクエリを実行できる方法はありませんか? 明らかに、SCR はバンドルの Service-Component-XML ファイルを読み取り、消費/参照されたサービスを追跡するためにある種の「サービス トラッカー」を「登録」することになっています。利用可能ですよね?
これで私を助けていただければ幸いです。
ありがとう、ドン