Java Webservice Einstellungen speichern

Thekal

Cadet 3rd Year
Registriert
Sep. 2007
Beiträge
57
Hallo zusammen,

ich bin recht neu im Bereich JEE und habe einen Webservice erstellt, mit dem es möglich ist Daten aus einer MySQL Datenbank auszulesen.
Diese Daten können dann im Browser mittels JSF erstellter Webseiten angeschaut und verändert werden.

Nun ist es so, dass ich gerne allgemeine Einstellungen für den gesamten Webservice haben möchte.
Das Problem hierbei ist wo speichere ich diese? Es würde sich um ein paar Boolesche und Integer Werte handeln, mit denen verschiedene Optionen ein und ausgeschaltet werden sollen. Diese sollen persistent gespeichert werden.

Meine Frage ist hier, wo speichere ich diese Werte? Meine verschiedenen Ideen die ich bisher hatte sind nicht wirklich zufriedenstellend.
Die erste Idee die ich hatte war eine simple Bean die einen ApplicationScope besitzt. Das Problem ist hierbei offensichtlich, wird der Webservice neugestartet sind die alten Einstellungen wieder weg.
Daher der nächste Versuch das ganze extern auszulagern, aber wo? Die einzigen beiden Ideen die ich hatte war einer extra Tabelle der MySQL Datenbank (was wohl viel zu überdimensioniert wäre für ein paar Einstellungen) oder eine Property File.
Das Problem bei der Property File ist, ich kann zwar aus einer Property File Werte auslesen, aber die darin enthaltenen Werte nicht verändern und speichern.

Meine Frage ist also, wo und wie speichere ich persistent ein paar Einstellungen für meinen gesamten Webservice?
 
Hallo Thekal,
ich verwende für derartige Zwecke immer ein ini Format mit der entsprechenden Java library ini4j.

Damit werden auch gleich die Typen entsprechend konvertiert (boolean, Integer etc). Speichern tue ich das per default im home Ordner vom derzeitigen Benutzer aber das kannst du machen wie es dir beliebt.

Ich empfehle dir kein Frontend für die Einstellungen zu bauen sondern einfach die gesamte Ini in einer textarea von den Admins editierbar zu machen.

Durch das regelmäßig erneute einlesen der Datei kannst du Einstellungen im Betrieb ändern ohne den Container (Jetty, Tomcat etc) neustarten zu müssen.

Für Python verwende ich für derartige Zwecke gerne sqlite da es so einfach zu handeln ist.
 
Zuletzt bearbeitet:
Ich würde an deiner Stelle deine beiden Ansätze kombininieren. Lege eine kleine Datenbank-Tabelle an (reicht ja Key-Value), und lese diese beim Start deiner Application ein.
 
ini4j? Es gibt Java properties Dateien. Da braucht man keine Library für ;) Alternativ XML, das geht ja auch out of the box.

Du lädst beim Start da Property File und bekommst dann ein Properties Objekt. Darin kannst du dann auch Werte überschreiben und danach speicherst du es wieder. Ich sehe das Problem nicht.

Für komplexere Datenstrukturen wäre natürlich XML oder JSON vorzuziehen.
 
ini-Dateien sind in der Java-Welt (aus naheliegenden Gründen) nicht sehr gebräuchlich.

properties-Dateien gefallen mir persönlich allerdings auch nicht, da sie kein Unicode-Encoding verwenden. Das wurde mit der XML-Variante (seit Version 6) zum Glück geändert, wobei ich kein Freund von XML bin. Das "Design" von java.util.Properties ist ohnehin nicht so wirklich gelungen.

Wenn externe Libs, dann JSON oder yaml. Oder eine ausgewachsene Lösung wie https://github.com/typesafehub/config. Gibt natürlich noch jede Menge andere Alternativen.
 
Zurück
Oben