/ / InputStream des Bundles bereits in der OSGi Runtime installiert? - Java, Osgi, Apache-Felix, Äquinoktikum

Get InputStream des Bundles bereits in OSGi Runtime installiert? - Java, OSGI, Apache-Felix, Tagundnachtgleiche

Ich versuche, eine Sicherungsdatei eines Bundles zu erstellendas ist in der Runtime installiert, so dass ich es deinstallieren und dann möglicherweise neu installieren kann, wenn ich will. Weiß jemand, wie Sie den Speicherort der Bundle-Datei ermitteln können, die bereits in der Laufzeitumgebung installiert ist? Ich möchte dies auf eine Weise tun, die unabhängig vom OSGi-Container funktioniert (insbesondere möchte ich, dass es in Equinox und Felix funktioniert). Im Idealfall handelt es sich dabei um Informationen aus dem Internet Bundle Objekt (oder aus Informationen von einem Objekt, das von Bundle Objekt).

Edit: Kurz gesagt, ich bekomme jedes Bundle installiert (bundleContext.getBundles) und von diesem Versuch, Dateipfade der Bundles zu ermitteln.

Antworten:

1 für die Antwort № 1

Sie können das nicht tun. Die OSGi-Spezifikation bietet keine Möglichkeit, den Eingabestrom für ein installiertes Bundle abzurufen. Dies liegt meistens daran, dass der OSGi nicht verlangt, dass Bundles in Form einer JAR-Datei vorliegen oder in einem beliebigen Archivformat gespeichert werden. Ein OSGi-Framework könnte beispielsweise die Einträge eines Bundles in einer Datenbank speichern und dann angeforderte Klassen und Ressourcen aus dieser Datenbank suchen. Sie sehen also, es gibt keine Garantie, dass die Pakete nach der Installation in JAR-Form vorliegen.


0 für die Antwort № 2

Verwenden Sie bundle.getLocation (). Der Ort, von dem das Paket installiert wurde, wird zurückgegeben (sofern verfügbar). Es gibt keine Garantie, dass Sie die Bundle-Jar von dort aus laden können. Abhängig von der ursprünglichen Installation des Bundles funktioniert dies jedoch.