Die Konfiguration eines Servers erfolgt über Java™-Eigenschaften. Ein Server kann weitestgehend ohne besondere Konfiguration betrieben werden. Nur die Angabe des TCP-Ports ist obligatorisch.
Folgende Teile lassen sich konfigurieren:
Port
Der Server erhält seine Roblets® über das Netzwerk. Zu diesem Zweck lauscht er an einem TCP-Port auf eingehende Verbindungsanfragen und geht auf Anfrage nach Möglichkeit Verbindungen ein.
Mit Hilfe der Java™-Eigenschaft genRob.genControl.port wird dem Server die Port-Nummer mitgeteilt. Wird die Angabe einer Port-Nummer weggelassen, so wird als Standardwert 2001 angenommen.
java -DgenRob.genControl.port=2001 -jar org.roblet.jar server
Letzteres ist demnach gleichbedeutend mit:
java -jar org.roblet.jar server
Bei Angabe von 0 als Port-Nummer verwendet der Server die nächste freie Portnummer, die das Betriebssystem zurückgibt.
java -DgenRob.genControl.port=0 -jar org.roblet.jar server
Logbuch
Ein Server führt ein zentrales Logbuch. Dieses Logbuch ist eine Liste, die in der JVM gehalten wird. In das Logbuch werden Einträge von drei Quellen gemacht: Vom Server selbst, von den Modulen und von den Roblets. Die Server-eigenen Aufzeichnungen sind standardmäßig abgeschaltet, können jedoch angeschaltet werden. Logbuch-Einträge von Modulen und Roblets® werden immer aufgezeichnet.
Wird ein Logbuch-Eintrag erzeugt, so wird er zunächst ins Logbuch eingetragen. Je nach Konfiguration des Servers wird er dann noch auf den Standard-Ausgabestrom ausgegeben und/oder in eine Datei geschrieben.
Logbuch-Einträge lassen sich jederzeit per Roblet verarbeiten, also auch abholen. Das Werkzeug nutzt das, um ein Hilfsmittel für die Kommando-Zeile des Betriebssystems bereitzustellen.
Server-eigene Einträge und Ausgabe auf Standard-Ausgabestrom
Ein Server kann viele Informationen über seine Aktivitäten in Form von Logbuch-Einträgen aufzeichnen. Die Server-eigenen Aufzeichnungen sind standardmäßig abgeschaltet.
Um Aktivitäten aufzeichnen zu lassen, muß die Java™-Eigenschaft genRob.genControl.log bestimmte Schlüsselworte enthalten. Will man darüber hinaus den intern benutzten Roblet®-Klienten zu Aufzeichnungen bewegen, muß die eben genannte Eigenschaft das Schlüsselwort client enthalten und außerdem muß die Java™-Eigenschaft genRob.genControl.client.log mit weiteren Schlüsselworten versehen werden.
Folgende Schlüsselworte gibt es:
- base - Vorgänge im Basismodul
- call - Aufruf und Verarbeitung entfernter Funktionalität
- confirm - Bestätigungen der Transportebene mit einem Klienten (nur zusammen mit transport und/oder queues)
- client - Zur Aktivierung von genRob.genControl.client.log
- connect - Verbindungsauf- oder abbau
- directories - Verzeichnisdienst-Zugriff
- httpd - HTTP-Aktivitäten
- link - Verbindungsebene mit einem Klienten
- load - Laden von Klassen und Ressourcen vom Klienten
- long - ausführliche Datums- und Zeitausgabe (nur mit sinnvoll zusammen mit terminal)
- main - Generelle Vorgänge
- memorize - Einsatz eines Speicherwächters (vgl. Konsole)
- module - Modulbetreuung
- queues - Warteschlangen der Transportebene mit einem Klienten (nur zusammen mit transport)
- security - Sicherheitsverwaltung
- shell - (ehemalige) Shell-Schnittstelle
- slots - Slots-Schnittstelle
- stream - Ströme mit einem Klienten
- transport - Transportebene mit einem Klienten
- tube - Röhrenebene mit einem Klienten
- terminal - Logbuch-Einträge synchron auf dem Standard-Ausgabestrom ausgeben
- unit - Vorgänge rund um Ersatzinstanzen von Einheiten
- version - Versionsinformationen
Sollen Fehler im Protokoll gesucht werden, ist folgende Reihenfolge einer Nutzung von Schlüsselworten sinnvoll. Man gibt zunächst nur ein Schlüsselwort an und dann bei Bedarf immer mehr. Es werden dadurch schrittweise immer mehr Informationen aufgezeichnet: connect, call, load, transport, queues, confirm, tube, link.
Ausgabe auf Standard-Ausgabestrom
Standardmäßig dient die Java™-Eigenschaft genRob.genControl.log nur dem Einschalten von Server-eigenen Aufzeichnungen. Will man auch Ausgaben im Terminal(fenster) haben, muß man das Schlüsselwort terminal verwenden. Das Schlüsselwort long erzwingt dabei zusammen mit terminal eine ausführliche Zeitausgabe mit Datum und Zeitzone, was bei bei sehr lang laufenden Servern hilfreich ist. Unabhängig davon arbeitet das Logbuch intern stets mit ausführliche Angaben.
Ausgaben der Befehlszeile werden mit den Ausgaben des Logbuchs gemischt. Unabhängig davon arbeitet das Logbuch intern stets mit ungemischten Angaben.
Der Standard-Ausgabestrom läßt sich in der Regel in eine Datei umleiten. Loggen in eine Datei verfolgt einen ähnlichen Zweck, allerdings erfolgt die Abspeicherung dort in einem Binärformat, welches das Logbuch fast identisch repräsentiert.
Beispiel
Hier ein Beispiel, wie der Server per Kommandozeile aufzurufen ist (alle Plattformen; in eine Zeile):
java -DgenRob.genControl.log=terminal,version ... -jar org.roblet.jar server
Läßt man die Eigenschaft leer (genRob.genControl.log=), so ist das gleichbedeutend mit dem Weglassen der Eigenschaft.
Datei-Loggen
Bei Angabe eines Dateinamens in der Java™-Eigenschaft genRob.genControl.log.file wird der Server eingehende Logbuch-Einträge parallel in eine Datei schreiben. Das geschieht zusätzlich zum Speichern in der JVM in das Logbuch. Diese Datei kann mit Hilfe Log-Datei-Funktion des Werkzeugs ausgelesen werden. Die Abspeicherung erfolgt in einem Binärformat, welches das Logbuch fast identisch repräsentiert und ist für eher seltene Debug-Problme gedacht.
Beispiel (in eine Zeile):
java -DgenRob.genControl.log.file=test.log ... -jar org.roblet.jar server
Läßt man die Eigenschaft leer (genRob.genControl.log.file=), so ist das gleichbedeutend mit dem Weglassen der Eigenschaft. Läßt sich die Datei nicht öffnen oder (nicht mehr) schreiben, so wird die weitere Nutzung des Mechanismus eingestellt und eine Fehlermeldung ins (interne) Log eingetragen.
Loggen des internen Roblet®-Klienten
Achtung Software-Entwickler: Wie eine Roblet®-Anwendung die von ihr benutzten Roblet®-Klienten dazu bringt, Log-Information zu erzeugen, ist in der Java™-Schnittstelle genRob.genControl.client.Log (Log mit großem L) beschrieben. An dieser Stelle geht es hingegen um den vom Roblet®-Server intern benutzten Roblet®-Klienten.
Folgende Schlüsselworte gibt es für das Logging des Server-internen Klienten:
- base - Basisinformationen
- call - Aufruf und Verarbeitung entfernter Funktionalität
- confirm - Bestätigungen der Transportebene mit einem Server (nur zusammen mit transport)
- clientConnection - Verbindungsaubau und -halt einer RMI-Verbindung
- connect - Verbindungsauf- oder abbau
- directories - Verzeichnisdienst-Zugriff
- httpdInform - generelle Informationen zum HTTP-Server
- httpdExplain - Download-Informationen des HTTP-Server
- httpdHint - Detail-Informationen des HTTP-Server
- link - Verbindungsebene mit einem Server
- load - Laden von Klassen und Ressourcen vom Server
- queues - Paketverwaltung der Verbindung mit einem Server
- sieve - Sieb-Aktivitäten
- stream - Ströme mit einem Server
- transport - Transportebene mit einem Server
- tube - Röhrenebene mit einem Server
Dabei ist zu beachten, daß für die Eigenschaft genRob.genControl.log auch der Wert client gesetzt ist, da sonst der interne Roblet®-Klient nicht für die Ausgabe von Log-Informationen initialisiert wird.
Hier ein Beispiel:
java -DgenRob.genControl.log=client,terminal -DgenRob.genControl.client.log=base ... -jar org.roblet.jar server
Läßt man die Eigenschaft leer (genRob.genControl.client.log=), so ist das gleichbedeutend mit dem Weglassen der Eigenschaft.
Rechte- und Versionsausgabe
Durch Setzen des Wertes der Java™-Eigenschaft org.roblet.server.quiet auf true kann die Ausgabe von Rechte- und Versionsinformationen unterdrückt werden. Der Wert kann beliebige Groß- und Kleinschreibung haben.
java -Dorg.roblet.server.quiet=true -jar org.roblet.jar server