Weitere aktuelle Java-Titel finden Sie bei dpunkt.
 Inhaltsverzeichnis   Auf Ebene Zurück   Seite Zurück   Seite Vor   Auf Ebene Vor   Eine Ebene höher   Index


14.4.3

Einstellungen im Betriebssystem



Der Zugriff auf die Einstellungen erfolgt über eine abstrakte Schnittstelle, aber wo werden sie eigentlich gespeichert? Sun versucht auch bei dieser Schnittstelle die Plattformunabhängigkeit zu wahren und den Preference-Mechanismus auf plattformspezifische Konstrukte abzubilden.

Windows

Unter Windows werden die Einstellungen somit in der Windows-Registry abgelegt. Alle Einstellungen im Benutzerbereich findet man im Knoten
  HKEY_CURRENT_USER/Software/JavaSoft/Prefs
Unter diesem Pfad befindet sich der Wurzelknoten des Benutzerbereichs. Systemeinstellungen befinden sich entsprechend in der Windows-Registry unter:
  HKEY_LOCAL_MACHINE/Software/JavaSoft/Prefs
Alle untergeordneten Knoten stellen bereits Java-Einstellungen dar. In der Windows-Registry kann man an den Datentypen sehen, dass Java wirklich alle Einstellungen in Zeichenketten ablegt. Obwohl in der Windows-Registry zwischen verschiedenen Datentypen unterschieden wird, sind auch Java-Einstellungen im alphanumerischen Typ abgelegt, die über setInt() gespeichert wurden.

Abbildung 14.2: Java-Preferences in der Windows-Registry
Abbildung 14.2

Linux/Solaris

Auf Linux/Solaris werden die Einstellungen in Textdateien gespeichert im Dateisystem gespeichert. Dabei wird jeder Knoten auf ein Verzeichnis abgebildet, die Einstellungen innerhalb eines Knotens werden in einer XML-Datei abgelegt. Die Wurzelverzeichnisse für die Benutzereinstellungen liegen in <user_home>/.java/.userPrefs. In welchem Verzeichnis die Systemeinstellungen abgelegt werden, hängt davon ab, welche Rechte der Anwender hat, der zum ersten Mal darauf zugreift. In Frage kommen /etc/.java/.systemPrefs bzw. <java_home>/jre/.systemPrefs: Hat der Nutzer Schreibzugriff auf /etc, werden die Einstellungen dort abgelegt, falls nicht, versucht die Laufzeitumgebung, dies unter <java_home>/jre zu tun. Erst wenn der Anwender auch dort keinen Schreibzugriff im Dateisystem hat, wird eine BackingStoreException ausgelöst.

Die grundlegende Speicherungsstruktur wird für die Benutzereinstellungen im Folgenden nochmals an einem Beispiel veranschaulicht. node1 stellt dabei das Verzeichnis für einen Knoten auf oberster Ebene dar. subnode repräsentiert einen Kindknoten:
<user_home>/.java/.userPrefs/node1/prefs.xml
<user_home>/.java/.userPrefs/node1/subnode/prefs.xml
...
Bei den System-Einstellungen
/etc/.java/.systemPrefs/node1/prefs.xml
/etc/.java/.systemPrefs/node1/subnode/prefs.xml
bzw.
<java_home>/jre/.java/.systemPrefs/node1/prefs.xml
<java_home>/jre/.java/.systemPrefs/node1/subnode/prefs.xml
Jedes Verzeichnis, das einen Knoten repräsentiert, enthält eine Datei mit dem Namen prefs.xml, in der die einzelnen Einstellungen des Knotens abgelegt sind. Diese XML-Datei ist entsprechend der Export-DTD aufgebaut, enthält jedoch lediglich ein Map-Element, in dem die Schlüssel-Wert-Paare abgelegt werden:
<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE map 
          SYSTEM 'http://java.sun.com/dtd/preferences.dtd'>

<map MAP_XML_VERSION="1.0">
  <entry key="font-size" value="12" />
  <entry key="font-name" value="Arial" />
</map>

Benutzerdefinierte Persistenz

Wenn man nicht die vordefinierten Persistenz-Mechanismen nutzen will, sondern Einstellungen z. B. in einer SQL-Datenbank oder einem LDAP-Server speichern möchte, dann kann man dies durch die Implementierung einer benutzerdefinierten PreferencesFactory realisieren. Hierzu ist Folgendes erforderlich: Das Interface PreferencesFactory hat zwei Methoden, die Zugriff auf die beiden Wurzelknoten bieten (systemRoot() und userRoot()). Sie liefern jeweils Preferences-Exemplare der spezifischen Preferences-Implementierung zurück. Ausgehend von diesen Knoten kann man über das API in der Hierarchie der Einstellungen navigieren (z. B. auf Kindknoten oder Elternknoten zugreifen).

Mit der Property java.util.prefs.PreferencesFactory kann man anschließend beim Start einer Java-Anwendung definieren, dass die eigene PreferencesFactory zur Speicherung der Einstellungen benutzt werden soll:
java -Djava.util.prefs.PreferencesFactory=mypkg.myPrefFactory PrefTest


 Inhaltsverzeichnis   Auf Ebene Zurück   Seite Zurück   Seite Vor   Auf Ebene Vor   Eine Ebene höher   Index

Copyright © 2002 dpunkt.Verlag, Heidelberg. Alle Rechte vorbehalten.