2016-04-21 13 views
0

Ich verwende Fabric8 v.1.2.0.redhat-133.Fabric8: aktuelles Profil im OSGi-Bundle abrufen

Ich habe ein Profil mit von Bündel und eine Konfigurationsdatei nach innen, zum Beispiel:

Bundle: mvn:my-gr/my-art/1-SNAPSHOT

Konfigurationsdatei: config.xml

ich in

ProfileManager manager = ProfileManagerLocator.getProfileManager(); 
Profile profile = manager.getProfile("1.0", "profile-name"); 
byte[] brokerConf = profile.getFileConfiguration("config.xml"); 

aufrufen Code meines Bundles und die Datei erhalten. Es klappt. Aber in diesem Fall muss ich den Namen des Profils kennen.

Gibt es eine Möglichkeit, den Namen des aktuellen Bundle-Profils zu erhalten?

Oder gibt es einen besseren Weg, config.xml zu bekommen, vielleicht nicht mit ProfileManager?

Antwort

1

Dies ist nicht möglich, da OSGi-Level-Profile nicht existieren. Profile sind ein Sicherungskonzept, mit dem Features und Bundles aufgelistet werden können. Features sind ein Karaf-Konzept und nur Bündel sind echte OSGi-Artefakte. Das bedeutet, dass der OSGi-Container keine Features oder Profile kennt und Ihnen daher nicht mitteilen kann, welche Funktion oder welches Profil für die Installation des Bundles verantwortlich war. Selbst wenn dies der Fall wäre, würde es immer noch die Tatsache geben, dass mehrere Features und Profile Ihr Bundle auf ihrer Liste haben könnten, was es unmöglich macht zu sagen, welches Profil das "aktuelle" ist.

Wenn Sie von einem Profil auf eine Datei zugreifen möchten, sollten Sie den Profil-URL-Handler verwenden. Siehe http://fabric8.io/gitbook/urlHandlers.html

+0

Ja, ich verstehe, dass OSGi nichts über Profile weiß. Ich brauche das aktuelle Profil nicht wirklich, ich muss die Konfigurationsdatei daraus lesen. Und 'Profil:' URL-Handler ist genau das, was ich brauchte. Ich wandere, warum ich es in Docs vermisste. Es klappt. Vielen Dank. –

+0

Gern geschehen. –

Verwandte Themen