Dokumentation für BundleContext
sagt, es lässt dich
Allerdings gibt es keine getBundle(String symbolicName)
-Methode, nur getBundle(long id)
(und die ungeeignete getBundle(String location)
. Natürlich ist es möglich, getBundles()
aufzurufen und über das zurückgegebene Array zu iterieren, aber gibt es einen besseren Weg?
Ich denke, das Durchlaufen des Arrays von getBundles()
ist in Ordnung. Vielleicht sollte es überhaupt nicht existieren, weil der symbolische Name nicht eindeutig ein Bündel identifiziert. Vielleicht getBundles(String symbolicName)
...
Aus der OSGi-Service-Plattform-Kernspezifikation, Version 4, Version 4.3:
3.6.2 Bündel-symbolischerName
Der Header
Bundle-SymbolicName
manifest ist ein obligatorischer Header. Das Bündel symbolischer Name und Bundle-Version identifizieren ein eindeutiges Bündel. Dies bedeutet nicht immer, dass dieses Paar in einem Rahmen einzigartig ist, in In bestimmten Fällen kann das gleiche Bündel mehrmals in der selbes Framework, siehe Bundle Identifier auf Seite 89.
Die verwiesene Seite 89 (die eigentlich Seite 95 ist):
4.4.1 Bündel-Identifikatoren
[...]
Obwohl das Paar einzigartig ist, ist es möglich, das gleiche Paket zu installieren mehrmals wenn das
org.osgi.framework.bsnversion
Framework startende Eigenschaft wird auf mehrere gesetzt.
Ich habe noch nie ein Beispiel dafür gesehen. Aber es gibt den Dienst PackageAdmin
, vielleicht möchten Sie sich das ansehen, aber es scheint veraltet zu sein. Das Ersatzpaket org.osgi.framework.wiring
scheint keine solche Methode zu bieten.
Und um klarzustellen: Was ist Ihr Zweck, eine Instanz eines Bündels zu haben?