Montag, 5. Januar 2009

Konfiguration für Clientanwendungen

Jetzt ist mir das schon mehrfach passiert. Man programmiert mal eben ein Minniprogramm, das konfigurierbar sein soll. Je nach Anforderung werfe ich die Konfigurationsparameter eben per Kommandozeile mit rein oder benutze eben die System Properties alá System.getProperties().load(InputStream). Beides basiert auf dem Key/Value prinzip, was aber schnell mal umständlich werden kann, wenn man zum Beispiel eine Auflistung als Wert zu einem Key haben möchte. In meinem Fall müssen eine vielzahl von Pfaden einem Parameter zugeordnet werden. Soweit auch nicht weiter wild. Das kann man ja einfach mit einem Trennzeichen machen und das ganze dann auseinanderschneiden. Will man aber zu jedem Pfad noch weitere Eigenschaften reinreichen, wirds unhandlich.

Ich habe mir schon vor längerer Zeit mal überlegt was zu schreiben, mit dem ich komfortabel Konfigurationsdateien erstellen kann. Gekommen bin ich dazu freilich nie. Da nun das Problem wieder einmal aktuell geworden ist, und es ja schließlich nix gibt, wofür nicht irgendeine Javalibrary existiert, habe ich mich mal auf die Suche gemacht. Mir schwebte da was vor, womit ich Konfigurationsobjekte hierarchisch lesen und schreiben können wollte.

Als allererstes stößt man da natürlich auf IoC Container wie Spring. Damit läßt sich so ziemlich alles machen, was ich mir vorgestellt habe und noch ganz viel mehr, was ich allerdings gar nicht benötige. Zwar sehr interessant und sicher lohnenswert sich da mal einzuarbeiten, aber für meine Zwecke zu umfangreich.

Anschließend habe ich mir das Obix Framework mal angesehen. Leider ist die Dokumentation sehr dünn. Zumindestens kann Obix auch Collections komfortabel verwalten, was über die Fähigkeiten der System.properties schon mal hinaus geht. Die Konfiguration legt Obix dann im XML-Format ab.

Recht vielversprechend sieht das Apache Configuration Projekt aus. Damit lassen sich Objekte aus einer XML-Datei herstellen und Eigenschaften aus Properties oder Windows .ini Dateien auslesen. Will man nun aber mehr als nur Eigenschaften haben, also fertige Konfigurationsobjekte, kommt man um eine XML-Beschreibung des Objektes nicht umhin. Da ließe sich mit Xdoclet sicher was machen.

Letzendlich hängen geblieben bin ich bei dem Apache Betwixt Projekt. Dieses kann Objekte, die sich an das Javabean Naming halten, in XML schreiben und auch wieder herstellen. Das ganze dann auch noch ohne XML Beschreibung und einer API wie sie einfacher nicht sein könnte. Das ganze funkltioniert auch dann noch gut, wenn die Javabean weitere Javabeans enthält. Nach einigem rumspielen und Tests, werde ich Betwixt wohl erstemal benutzen. Der Ansatz zur Konfigurationsverwaltung mittels Javabeans ist auf jeden Fall sehr angenehm zu programmieren und auch die Erweiterung ist einfach. Einfach eine getter/setter Methode dazu tun, und schon hat man eine Eigenschaft mehr.


Keine Kommentare:

Kommentar veröffentlichen