サービス登録を監視するバンドルを作成しようとしています。サービスインターフェイスのAPIバンドルに埋め込まれている特定のメタデータに応じて、いくつかの追加タスクが実行されます。メタデータは主に1つ以上のプロパティファイルで構成されていますので、私はBundle.findEntries()
を使用することを考えましたが、メタデータはAPIバンドルに埋め込まれているため、ServiceReference.getBundle().findEntries()
のような処理はできません。 APIバンドルには含まれていません。1つのバンドルがServiceReferenceから別のバンドルのBundleインスタンスを取得する方法はありますか?
私はServiceReference
たObjectClassプロパティからサービスAPIのクラス名を取得して、パッケージ管理サービスまたはFrameworkUtil.getBundle()
のいずれかを使用して考えたが、これらの両方がClass
が必要です - しかし、どのように私は、サービス・インターフェースのClass
を得るのですか?この作業を行っているバンドルはおそらくクラスのパッケージをインポートしていないので、Class.forName()
は動作しません。
私の他の選択肢は、バンドルとサービスの両方のイベントを監視することです。最初はメタデータを含むバンドルのレジストリを作成し、2番目はサービスが登録されたときに最初のレジストリを作成します。その道を進む前に、もっと簡単な方法があるかどうかを探しています。
私は 'PackageAdmin'を使ってExportedPackagesを取得することは一度も考えていませんでした。ありがとう! –