[osgi] bundle spezifische properties

gerdgerdgerd

Aktives Mitglied
hallo zusammen,

gibt es eine Best Practice um spezifische Properties abzuspeichern. Beispiel: Wird das Programm das erste mal ausgeführt soll bestimmte Settings einmalig angegeben werden. D.h. ich muss die Properties dem Bundle mitführen und diese auch mit deployen können.

Habs schon mit txt-Dateien und Properties probiert. Aber wahrscheinlich steh ich nur auf dem Schlauch und es ist zu spät um klar genug zu denken :)
 
M

maki

Gast
OSGi (und damit Equiox) unterstützen Preferences, mit Eclipse RCP bekommt man auch die Möglichkeit diese sinnvoll zu initialisieren (AbstractPreferenceInitializer), was es da für "nacktes" OSGi gibt weiss ich nicht.
 

fkh

Mitglied
hallo zusammen,

gibt es eine Best Practice um spezifische Properties abzuspeichern. Beispiel: Wird das Programm das erste mal ausgeführt soll bestimmte Settings einmalig angegeben werden. D.h. ich muss die Properties dem Bundle mitführen und diese auch mit deployen können.

Habs schon mit txt-Dateien und Properties probiert. Aber wahrscheinlich steh ich nur auf dem Schlauch und es ist zu spät um klar genug zu denken :)

Hallo,

soweit ich das verstanden habe (sowohl die Thematik als auch deine Frage :)), bietet es sich an, properties-Dateien in sogenannten Fragment Bundles mitzuliefern. Das hat den Vorteil, dass die properties zur Laufzeit ersetzt werden können (durch ein redeploy des Fragment Bundles), ohne dass das eigentliche Bundle neu gestartet werden muss. Fragment Bundles haben keinen eigenen Lebenszyklus (können also auch nicht eigenständig gestartet werden), sondern sind vollständig vom Lebenszyklus des zugehörigen Host-Bundles abhängig. Dabei erweitern sie den Klassenpfad des Host-Bundles (z. B. nützlich, wenn wie bei z. B. Log4J die Konfigdateien im cp erwartet werden), sind aber nach "außen" gegenüber anderen Bundles nicht sichtbar. Weitere Infos hierzu findest du bei [1] und [2]. Natürlich kannst du aber auch die properties-Dateien in das eigentliche Bundle packen, wenn du Konfiguration und Implementierung nicht trennen möchtest. Eine andere Möglichkeit besteht darin, eine config.ini für den Equinox-Start zu pflegen und dort die properties zu setzen [3]. Die letzte Möglichkeit, die mir jetzt einfällt, ist manuell in der Equinox console mittels setprop name=wert die Einstellungen zu pflegen. Das wäre aber mit Sicherheit nicht sehr praktikabel ;)

Grundsätzlich kannst du die properties-Dateien beim Start mittels Activator.start(BundleContext) (oder zu einem beliebigen anderen Zeitpunkt) einlesen und mittels System.setProperty bzw System.setProperties setzen und später an beliebiger Stelle mittels System.getProperty/System.getProperties wieder auslesen.

Zudem bringt OSGi von Haus aus bereits Lösungen für diese Problemstellung mit. Je nach Art der Anforderung gibt es einmal den Configuration Admin Service [4]. Dabei handelt es sich um einen Service, der die zentrale Konfiguration von beliebigen Bundles/Services zur Laufzeit ermöglicht. Eignet sich auch bei Verwendung von Management Agents (z. B. Knopferfish Desktop, bekommt man in Equinox auch zum laufen). Der andere Ansatz ist der Preferences Service [5]. Dieser ermöglicht das Auslesen und Speichern von System- und Benutzereinstellungen auch über Unterbrechungen der OSGi-Platform hinweg.

Denke mal, damit hast du die wichtigsten Begrifflichkeiten beisammen zu deinem Problem.

Viele Grüße
fkh

[1] OSGi Alliance | Download / OSGi Service Platform Release 4 Version 4.2 - Core Specification Kapitel 3.13
[2] Gert Wütherich et al., Die OSGi Service Platform: Eine Einführung mit Eclipse Equinox - Kapitel 8 (Ich bin von dem Buch wirklich begeistert, da es imo sehr verständlich und zudem auf Deutsch in OSGi einführt, auch wenn es schon etwas älter ist)
[3] Equinox QuickStart Guide
[4] OSGi Alliance | Download / OSGi Service Platform Release 4 Version 4.2 - Compendium Specification Kapitel 104
[5] OSGi Alliance | Download / OSGi Service Platform Release 4 Version 4.2 - Compendium Specification Kapitel 106
 

gerdgerdgerd

Aktives Mitglied
wow, danke für die detaillierte antwort.

jetzt heisst es erstmal alle möglichkeiten durchlesen und die möglichst beste zu wählen.

Danke!
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
T OSGi OSGI bundle bauen org.apache.xerces Plattformprogrammierung 3
G OSGi Bundle-ClassPath Plattformprogrammierung 3
C RCP Applikation starten als OSGi Bundle Plattformprogrammierung 2
B OSGi, Euqinox, innherhalb vom Bundle Pfad des zugehörigen jar-files ermitteln Plattformprogrammierung 6
F OSGi und root rechte Plattformprogrammierung 2
Z MySQL-Treiber in RAP-Anwendung für Jetty im OSGI- Equinox- Maven-Dschungel Plattformprogrammierung 0
Shams Antbuild - Problem bei OSGi Anfängertutorial Plattformprogrammierung 0
P OSGi registerService Plattformprogrammierung 3
H OSGi OSGi + Logback + slf4j - Eclipse Run Configuration Plattformprogrammierung 7
G OSGI bundleChanged Plattformprogrammierung 2
E OSGi Equinox HttpService only supports servlet 2.1 specification. Plattformprogrammierung 2
X Probleme mit dem OSGi-Framework Plattformprogrammierung 3
S OSGi Declarative Service Cardinality Plattformprogrammierung 6
Kr0e OSGI - Anfängerfragen Plattformprogrammierung 3
K OSGi Verteilte Anwendung? Plattformprogrammierung 9
B OSGi Einsteiger OSGi-Applikation Plattformprogrammierung 9
S (OSGI - EQUINOX) Welche Eclipse IDE? Plattformprogrammierung 3
N OSGi: Ressourcen gezielt aus bestimmten Modulen laden? Plattformprogrammierung 4
borobudur OSGi OSGi Blueprint Integrationstests Plattformprogrammierung 6
S OSGi Filter Syntax Plattformprogrammierung 2
N OSGi Dependency Loading Plattformprogrammierung 2
S OSGi Bibliothek für alle Plattformprogrammierung 5
H OSGI mit Eclipse und Maven Plattformprogrammierung 5
X OSGi Splash ohne product Plattformprogrammierung 2
G OSGi: Service registrieren Plattformprogrammierung 2
lumo OSGI Service - ServiceReference Plattformprogrammierung 3
DEvent [osgi] Services implementieren Plattformprogrammierung 2
B equinox OSGi EclipseStarter.startup NullPointerException Plattformprogrammierung 3
B OSGi, Equinox, Exceptions werden "ignoriert" Plattformprogrammierung 21
C OSGi, Hibernate und welche Datenbank? Plattformprogrammierung 4
astralarse Custom OSGi Launcher mit config.ini Plattformprogrammierung 6
C Eclipse - Externe OSGi bundles adden Plattformprogrammierung 7
F OSGi Anwendungsdesign Plattformprogrammierung 3
N OSGI in Netbeans? Plattformprogrammierung 5
X OSGi und RCP Plattformprogrammierung 15
C OSGi shutdown Plattformprogrammierung 4
D Problem mit Synth Painter und OSGi (Equinox) Plattformprogrammierung 8
D OSGi JSR296 (Swing Application Framework) - Konzeptionsfrage Plattformprogrammierung 2
G Osgi Plattformprogrammierung 5
A Plugin konzepte: OSGI oder JPF? Plattformprogrammierung 5
S OSGI Framework Knopflerfish Plattformprogrammierung 11
H !MESSAGE Missing required bundle javax.mail_1.4.0. Plattformprogrammierung 5
F OSGi NPE bei deklarativen Bundle mit Maven SCR Plattformprogrammierung 2
G OSGi Ressourcen aus anderem Bundle laden Plattformprogrammierung 15
G RCP Datei im Bundle Plattformprogrammierung 6
A RCP RAP-Bundle nach Installation nicht auffindbar?! Plattformprogrammierung 5
A OSGi Bundle exportieren, importieren und vewenden geht nicht?! Plattformprogrammierung 4
lumo RCP The System Bundle was updated Plattformprogrammierung 13
A RCP p2 - manuelles update "check for updates" von core bundle funktioniert nicht Plattformprogrammierung 6
musiKk OSGi Bundle findet Activator nicht (ClassNotFoundException) Plattformprogrammierung 1
S OSGi Ablegen von Bundle-Eigenschaften (unabhängig) Plattformprogrammierung 4
L RCP Plugin als Bundle geklarieren? Plattformprogrammierung 3
O Bundle in Projekt-Dependencies nicht sichtbar Plattformprogrammierung 6
lumo Bundle verzeichnis Plattformprogrammierung 10
N bundle und classpath Plattformprogrammierung 12

Ähnliche Java Themen

Neue Themen


Oben