パッケージをエクスポートするバンドルを見つけるにはどうすればよいですか?
私は felix を使用しており、"com.test" のような文字列があります。どのバンドルがそのパッケージをエクスポートしているかを知るにはどうすればよいですか?
PackageAdmin は非推奨になったため使用したくありません。また、各バンドルの Export-Package ヘッダーを取得して解析したくありません。
何か案は?
パッケージをエクスポートするバンドルを見つけるにはどうすればよいですか?
私は felix を使用しており、"com.test" のような文字列があります。どのバンドルがそのパッケージをエクスポートしているかを知るにはどうすればよいですか?
PackageAdmin は非推奨になったため使用したくありません。また、各バンドルの Export-Package ヘッダーを取得して解析したくありません。
何か案は?
Gogoシェルではなく、プログラムでこれを行いたいようです...少なくとも、質問の文言からそれを想定します。
特定のパッケージをエクスポートする多くのバンドルが存在する可能性があり、そのパッケージが多くのバンドルによって多くのバンドルから使用されている可能性があるため、「どのバンドル」が特定のパッケージをエクスポートするかを言う実際の方法はありません。特定のバンドルがあり、どのバンドルがそれにパッケージを提供するかを知りたいcom.test
場合は、インポートするバンドルの配線を取得してからBundle.adapt(BundleWiring.class)
、 を使用BundleWiring.getRequiredWires()
してバンドルのすべての依存関係のプロバイダーを取得できます。
osgi.wiring.package
そこから、必要なパッケージの名前空間のワイヤーを見つけるだけで、そのワイヤーのプロバイダーは、関心のBundleCapability
あるBundleRevision
バンドルの になります。
Apache Felix OSGi コンソールの最近のバージョンには、特定のパッケージまたはクラスをエクスポートするバンドルを一覧表示する「依存関係ファインダー」プラグインが含まれています。http://www.6dlabs.com/blog/dklco/2012-05-04/new-cq-55-dependency-finderにいくつかのスクリーンショットがあります(CQ5 について言及していますが、プラグインはそれに依存していません)。
これは管理者レベルで役立ちます。コードで確認する必要がある場合は、そのプラグインのソース コードを参照してください。https://issues.apache.org/jira/browse/FELIX-3045を参照してください。
試しましたか:エクスポート| grep com.test?