パッケージをエクスポートするバンドルはどのようにして見つけられますか?パッケージをエクスポートするOSGIバンドルを検索しますか?
私はfelixを使用していますが、「com.test」のような文字列を持っていますが、そのパッケージをどのバンドルにエクスポートするのかはどのように分かりますか?
私はPackageAdminを推奨していませんので、使用したくありません。実際には、各バンドルのExport-Packageヘッダを取得して解析する必要はありません。
アイデア?
パッケージをエクスポートするバンドルはどのようにして見つけられますか?パッケージをエクスポートするOSGIバンドルを検索しますか?
私はfelixを使用していますが、「com.test」のような文字列を持っていますが、そのパッケージをどのバンドルにエクスポートするのかはどのように分かりますか?
私はPackageAdminを推奨していませんので、使用したくありません。実際には、各バンドルのExport-Packageヘッダを取得して解析する必要はありません。
アイデア?
Gogoシェルではなく、プログラムでこれをやりたがっているように思えます...少なくとも、私はあなたの質問の文言からそれを仮定します。
特定のパッケージをエクスポートするバンドルが数多くあり、そのパッケージを多数のバンドルから多くのバンドルから使用できるため、特定のパッケージをエクスポートする "実際のバンドル"とは言いません。特定のバンドルを所有していて、どのバンドルがパッケージcom.test
を提供しているか知りたい場合は、インポートバンドルの配線Bundle.adapt(BundleWiring.class)
を取得してからBundleWiring.getRequiredWires()
を使用してバンドルのすべての依存関係のプロバイダを取得できます。そこから
あなただけの、そのワイヤーのプロバイダはあなたが興味のあるバンドルのBundleRevision
のBundleCapability
になり、あなたがしたいパッケージのosgi.wiring.package
名前空間のワイヤーを見つける必要があります。
の最近のバージョンをApache Felix OSGiコンソールには、特定のパッケージまたはクラスをエクスポートするバンドルをリストする「依存関係検索」プラグインが含まれています。 http://www.6dlabs.com/blog/dklco/2012-05-04/new-cq-55-dependency-finderにいくつかのスクリーンショットがあります(CQ5について言及していますが、プラグインはそれに依存しません)。
管理者レベルで便利だし、あなたはコードでそれを見つけるために必要がある場合は、そのプラグインのソースコードを見て見ることができました
これをやってみたかったと述べている必要がありますこれは基本的に私が探していたものです。私はすべてのバンドルを通過してこれをチェックしなければならないのは残念です。私はフレームワーク上のメソッドを望んでいました。ここにはパッケージがあります。それはどのバンドルがそれを満たすのですか?いずれにしても依存関係を解決しなければならないときに、フレームワークが背後で何をしているのかを考えてみましょう。しかし、とにかく、答えに感謝します。 – Boomah