Ich möchte eine Ressourcendatei (z. B. eine XML-Konfigurationsdatei) in mein Bundle einfügen und sie für alle anderen Bundles im Container sichtbar machen. Ist es möglich, ohne den Manifest-Header Fragment-Host zu verwenden? Ich möchte, dass diese Ressourcendatei immer im Klassenpfad aller Bundles angezeigt wird, die neben meinem Bundle ausgeführt werden, auch solche, die noch nicht vorhanden sind, aber möglicherweise in Zukunft hinzugefügt werden.Wie kann eine Ressourcendatei für alle Bundles in OSGi sichtbar gemacht werden?
EDIT:
Um zu klären - die Ressource muss passiv verfügbar sein, das heißt, die anderen Bündel sollen es in der Lage sein, in ihrem Classpath zu finden, und nicht von einem speziellen API oder Dienst meines Bündels beziehen.
Etwas mehr Hintergrund - meine Umgebung ist ein bisschen unordentlich, aber ich habe keine Kontrolle darüber und kann nicht ändern, die vorhandenen Bündel. Der einzige Weg, wie ich das ändern kann, ist das Hinzufügen eigener Bundles. Diese Umgebung enthält mehrere Kopien der ch.qos.logback.classic bundle
. Wenn das Logback gestartet wird, sucht es im Klassenpfad nach bestimmten XML-Konfigurationsdateien. Wenn es keine von ihnen findet, ist das Standardverhalten, dass alles auf stdout mit Debug-Level gedruckt wird. Diese Umgebung wurde früher zum Hosten einer GUI-Anwendung verwendet, so dass es vorher nicht viel bedeutete, aber jetzt versuche ich, sie so anzupassen, dass ich einige ihrer Funktionen im Headless-Modus nutzen kann. Jetzt wird es mir wichtig, es so konfigurieren zu können, dass nur Warnungen und Fehler auf der Konsole ausgegeben werden.
Danke Neil. Leider wird 'ch.qos.logback.classic' als Host meines Fragments in meinem Fall nicht funktionieren. Dies liegt daran, dass die anderen Bundles das Logback intern als Lib enthalten und den Manifestheader "Bundle-ClassPath: lib/logback-classic.jar" enthalten. Es scheint also der einzige Weg zu sein, mehrere Fragmente zu erstellen - eines für jedes Bündel. Trotzdem danke. – yashu