Finden Sie die OSGI-bundle, dass die Exporte ein Paket?
Wie finde ich das bundle, dass die Exporte ein Paket?
Ich bin mit felix und ich haben eine Zeichenfolge wie "com.test", Woher weiß ich, welches bundle exportiert das Paket?
Möchte ich nicht verwenden PackageAdmin, wie es ist veraltet und ich weiß nicht wirklich wollen, um die Export-Package-header für jedes Paket und analysiert.
Irgendwelche Ideen?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Klingt es wie Sie wollen, tun Sie dies programmgesteuert, nicht an der Gogo-shell ... zumindest werde ich davon ausgehen, dass aus der Formulierung Ihrer Frage.
Gibt es keine echte Möglichkeit zu sagen, "bundle" exportiert Paket, da kann es viele bundles exportieren jedem gegebenen Paket, und das Paket kann aus vielen bündeln von vielen bundles. Wenn Sie ein spezielles bundle, und Sie wollen wissen, welche bundle-Paket bietet
com.test
zu, können Sie den Import der bundle-VerkabelungBundle.adapt(BundleWiring.class)
und verwenden Sie dannBundleWiring.getRequiredWires()
zu Holen Sie sich die Anbieter alle von bundle-Abhängigkeiten.Von dort aus brauchen Sie nur zu finden, den Draht von
osgi.wiring.package
namespace für das Paket, das Sie wollen, dann können die provider von diesem Draht wird einBundleCapability
einerBundleRevision
für das bundle, das Sie interessiert sind in.Neuesten Versionen von Apache Felix OSGi-Konsole unter anderem eine "dependency finder" - plugin, das listet das bundle(s), die Ausfuhr einer bestimmten Paket oder einer Klasse. Es gibt einige screenshots zu http://www.6dlabs.com/blog/dklco/2012-05-04/new-cq-55-dependency-finder (die erwähnen, CQ5, aber das plugin hängt davon nicht ab).
Sinnvoll, auf die admin-Ebene, und wenn Sie brauchen, um das herauszufinden im code haben, könnten Sie einen Blick auf das plugin den Quellcode finden Sie unter https://issues.apache.org/jira/browse/FELIX-3045
Haben Sie versucht:
Export | grep com.test ?