Der Server kann weitestgehend ohne Java™-Eigenschaften betrieben werden. Nur die Angabe des TCP-Ports ist obligatorisch.
Folgende Java™-Eigenschaften werden vom Server verstanden:
- Port
- Sicherheitsmerkmale
- Logbuch
- Datei-Loggen
- Loggen der Klienten-Bibliothek
- Mißachtung von Umgebungsproblemen
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. Die Angabe einer Port-Nummer ist obligatorisch.
java -DgenRob.genControl.port=2001 -jar genRob.genControl.jar
Sicherheitsmerkmale
Durch Setzen der Java™-Eigenschaft genRob.genControl.security auf true ist eine vereinfachte Aktivierung von Sicherheitsmerkmalen möglich.
java -DgenRob.genControl.security=true -jar genRob.genControl.jar
Damit wird pro Roblet® eine "Sandbox" eingerichtet. Wird kein Sicherheits-Manager vorgefunden, so wird ein eigener installiert, der eigene Sicherheitsrichtlinien verwendet, um Server und Modulen alle Rechte zu geben.
Läßt man die Eigenschaft leer (genRob.genControl.security=), so ist das gleichbedeutend mit dem Weglassen der Eigenschaft.
Logbuch
Der Server kann viele Informationen über seine Aktivitäten aufzeichnen und Aufzeichnungen (Log-Einträge) von Roblets® und Modulen aufnehmen. Die servereigenen Aufzeichnungen sind standardmäßig abgeschaltet, können jedoch, wie folgt beschrieben, angeschaltet werden. Log-Einträge von Modulen und Roblets® werden immer aufgezeichnet.
Um Aktivitäten aufzeichnen zu lassen, muß die Java™-Eigenschaft genRob.genControl.log bestimmte Schlüsselworte enthalten. Will man darüber hinaus die intern benutzte Klienten-Bibliothek zu Ausgaben 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 (s.u.).
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
- httpd - HTTP-Aktivitäten
- jini - Jini™-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 - Log-Einträge synchron auf dem Standard-Ausgabestrom ausgeben
- version - Versionsinformationen
Standardmäßig zeichnet ein Server die Log-Einträge nur auf und stellt sie anfragenden Roblets® zur Verfügung. Will man auch Ausgaben im Terminal(fenster) haben, um sie z.B. in eine Datei umleiten zu können, muß man den Schalter terminal setzen (vgl. jedoch Datei-Loggen). Der Schalter long erzwingt dabei gegebenenfalls eine ausführliche Zeitausgabe mit Datum und Zeitzone, was bei bei sehr lang laufenden Servern hilfreich ist.
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 geloggt: connect, call, load, transport, queues, confirm, tube, link.
Hier ein Beispiel, wie der Server per Kommandozeile aufzurufen ist (alle Plattformen; in eine Zeile):
java -DgenRob.genControl.log=terminal,version ... -jar genRob.genControl.jar
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 Log-Einträge zusätzlich in eine Datei schreiben. Diese Datei kann mit Hilfe Log-Datei-Funktion des Werkzeugs ausgelesen werden.
Beispiel (in eine Zeile):
java -DgenRob.genControl.log.file=test.log ... -jar genRob.genControl.jar
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 Log eingetragen.
Loggen der Klienten-Bibliothek
Achtung Software-Entwickler: Wie eine Roblet®-Anwendung die von ihr benutzte Klienten-Bibliothek dazu bringt, Log-Information zu erzeugen, ist in der Java™-Schnittstelle genRob.genControl.client.Log der Klienten-Bibliothek beschrieben. An dieser Stelle geht es hingegen um die vom Roblet®-Server intern benutzte Bibliothek.
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
- genMediator - genMediator-Verzeichnisdienst
- 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 die Klienten-Bibliothek 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 genRob.genControl.jar
Läßt man die Eigenschaft leer (genRob.genControl.client.log=), so ist das gleichbedeutend mit dem Weglassen der Eigenschaft.
Mißachtung von Umgebungsproblemen
Der Server testet die Ablaufumgebung vor der Aufnahme seiner Tätigkeit. Werden Probleme festgestellt, so wird standardmäßig die Arbeit nicht aufgenommen, sondern eine Ausnahme geworfen. Mit Hilfe der Java™-Eigenschaft genRob.genControl.disregards kann dieses Verhalten verhindert werden.
Verschiedene Schlüsselworte können eingesetzt werden:
- threading - Die JVM trägt ungestartete Threads in die jeweilige Thread-Gruppe ein. Dieser Server kann daher in sehr ungünstigen Situationen Roblets®, die weitere Threads starten, nicht jederzeit beenden. Hinterlassen Roblets® sogar einfach ungestartete Threads, so können keine weiteren Roblets® mehr in diesen Server geladen werden.
Beispiel (in eine Zeile):
java -DgenRob.genControl.disregards=threading ... -jar genRob.genControl.jar
Läßt man die Eigenschaft leer (genRob.genControl.disregards=), so ist das gleichbedeutend mit dem Weglassen der Eigenschaft.