
Zu den Nachteilen von Java-Applets gehört, daß sie bislang nur beim Client lauffähig waren. Sun Microsystems hat mit dem vollständig in Java geschriebenen Web-Server Jeeves einen HTTP-Daemon entwickelt, der auch auf dem Server Objekte starten kann. Trotz des Alpha-Release-Status lohnt sich bereits jetzt ein vorsichtiger Blick hinter die Kulissen dieses Pakets, denn ähnlich Jigsaw geht Jeeves mit einigen sehr interessanten Eigenschaften ins Rennen der Web-Server. Er ist für Unix-Systeme, für die Macintosh- und Microsoft-Welt verfügbar. Notwendige Zusatz-Software ist der Online-Dokumentation zu entnehmen.
Der Ausgangspunkt der Entwicklung von Jeeves ist, eine allgemeine Java-Server-API zu schaffen. Mit dieser verfolgt Sun das Ziel, die Entwicklung eines breiten Spektrums von Java-basierten Internet- und Intranet-Servern auf der Grundlage eines erweiterbaren Framework zu ermöglichen und zu vereinfachen. Jeeves ist ein auf diesem Rahmen aufbauender HTTP-Server, der von dem objektorientierten Ansatz sowie von einigen Java-Eigenschaften wie Unterstützung von Threads, Portabilität sowie dynamischem Laden von Klassen profitiert.
Gerade in Sachen Performance ist Jeeves mit Sicherheit noch keine ernstzunehmende Konkurrenz für Apache und Co. In dieser Hinsicht gilt für ihn das bereits in Rainer Klutes Artikel [[#literatur 1]] für Jigsaw Gesagte: Bytecode-Interpretation und Alpha-Release lassen einfach keine höheren Erwartungen in bezug auf die Leistung zu. Allerdings entschädigt Jeeves Entwickler mit einem objektorientierten Design und einer weitreichenden Erweiterbarkeit. Allein dieser zu erwartenden Vorzüge wegen ist eine eingehende Betrachtung der Grundkonzepte von Jeeves in diesem zugegebenermaßen frühen Entwicklungsstadium interessant.
Mittlerweile in der Alpha-Version 2 vorliegend, ist die Installation von Jeeves unproblematisch - wenn man einige Dinge bedenkt. Das aktuelle Paket ist für jedermann frei erhältlich. Beim Download hat man derzeit die Wahl zwischen einer gezipten Solaris- und einer selbstentpackenden Windows-NT-Distribution. Leider fehlt - Ironie des Schicksals - in letzterer Version ein Teil der API-Dokumentation. Zum Auspacken unter Solaris ist ein unzip erforderlich, das lange Dateinamen unterstützt. Die Bezeichnung des angelegten Verzeichnisses ist gleichzeitig ServerRoot - ein leider Release-abhängiger Name. Wer Versionssprünge mitmachen will, ist bei Beibehaltung dieser Vorgehensweise gezwungen, sämtliche Änderungen an der Konfiguration der älteren Version per Hand in die aktuelle zu übernehmen. Eine Java-Laufzeitumgebung muß auf der Zielplattform zur Verfügung stehen, möglichst die aktuelle Version des JDK (Java Developers Kit) von Sun.
Standardmäßig arbeitet der Server auf dem Port 8080. Und da sich hinter dem httpd-Aufruf nichts anderes als das Starten von Java mit der HTTP-Server-Klasse verbirgt, ist ein Portieren auf andere Plattformen leicht möglich. Erforderlich ist dafür natürlich eine Java-Laufzeitumgebung. Lediglich zwei Dateien sind zu editieren. Nachzulesen bei Steve Ulrich (siehe Kasten Quellen).
Im Paket ist ein Shellscript namens jeeves.server enthalten, das unter etc zu finden ist und nach geeigneter Installation zumindest unter Solaris-Systemen den automatischen Start des Servers nach jedem Bootvorgang bewirkt. Anschließend sollte es ohne weitere Einstellungen an der Konfiguration möglich sein, mit einem beliebigen WWW-Browser die Default-Homepage des Servers anzufordern. Von dort verweist ein Link auf die Administrations-Web-Page des Servers.
Eine dynamische und entfernte Administration der meisten Eigenschaften zur Laufzeit ist möglich. Dieser Vorgang ist bei genauer Kenntnis der beeinflußbaren Servereigenschaften kinderleicht - über die Admininistrations-Web-Page http://ServerHostName:8080/admin/admin.html. Besonders angenehm und hilfreich sind die während des Verwaltungvorgangs kontextverknüpft in einem zweiten Rahmen angezeigten Konfigurationshinweise aus der Online-Dokumentation des Servers.
Dazu einige Hinweise: Anders als bei Jigsaw erfolgt die Administration bei Jeeves nicht über Forms, sondern über Applets, was sicherlich elegant, aber derzeit sichtbar ressourcenaufwendig ist. Selbstredend kommt deshalb nur ein Java-tauglicher Web-Browser für die Administration zur Laufzeit in Frage. Zu beachten ist, daß nur ein weißer Hintergrund in den sonst grauen Eingabefeldern Editierbarkeit signalisiert. Die Übernahme der eingegebenen Werte in den Server erfolgt bei einigen Administrationsabteilungen erst nach explizitem Quittieren des Wertes mit einem Return im Eingabefeld. Die Hintergrundfarbe sollte daraufhin wieder von weiß nach grau wechseln. Das Remote Login für den Verwalter basiert gegenwärtig noch auf dem MD5-Hash-Veschlüsselungsmechanismus. Zukünftige Serverversionen werden für die Administrator-Authentifizierung auf SSL (Secure Socket Layer) setzen.
Nach der Neuinstallation des Servers ist Username und Paßwort des Verwalter-Logins auf admin gesetzt - das kann und sollte man als erstes über die Account-Administration ändern. Wem das entfernte Verwalten des Servers aus Sicherheitsgründen nicht behagt, der kann die Änderungen unmittelbar an den dafür vorgesehenen Dateien im Verzeichnis $Server_Root/admin vornehmen. Das ist nur bedingt zu empfehlen, da diese Änderungen - wie bei anderen HTTP-Servern üblich - erst nach einem neuen Startup wirksam werden und das Fileformat sich in Zukunft ändern kann.
|
In einer Reihe von Kategorien kann der Webmaster online die Eigenschaften des Servers festlegen. |
Ungeachtet der bevorzugten Administrationstechnik bleibt festzustellen, daß es bei Jeeves von Beginn an eine Menge zu verwalten gibt. Zu den verschiedenen Administrationssektionen gehört die allgemeine Server-Konfiguration, das Server Logging, die File Aliases, die Servlet Aliases, das Servlet Loading, die Mime Type Administration sowie die Konfiguration der Zugriffsrechte (siehe Abb.1). Neu in der Alpha2-Release sind die Proxy-Konfiguration, die Verwaltung virtueller Hosts und die Site-Zertifizierung.
Ursprünglich wurden alle serverspezifischen Eigenschaften in einer Abteilung (section) verwaltet. JeevesA2 unterscheidet zwischen der Grundkonfiguration und dem Tuning des Servers. Unter Basic Configuration kann der Administrator Parameter mit statischem Charakter (Port, Zugriffskontrolle) ändern und den Server neu starten, was bei einer Portveränderung notwendig ist.
Das Aktivieren/Desaktivieren der Zugriffskontrolle allerdings ist mit Vorsicht zu genießen: im AdminRealm-Falle bedeutete ein Abschalten schlicht Verwaltungsrechte für alle.
Als Protokolle für die Client/Server-Kommunikation stehen je nach Sicherheitsanforderungen HTTP und HTTPS zur Auswahl. Letzteres setzt auf SSL (Secure Socket Layer) auf, so daß ein SSL-tauglicher Browser vorhanden sein muß. Dies erfordert laut Dokumentation eine vorherige Site-Zertifizierung, die wiederum noch nicht benutzbar ist.
Server-Tuning erfolgt dynamisch, das heißt alle Parameteränderungen werden zur Laufzeit des Servers (ohne Neustart) wirksam. Das gilt beispielsweise für die einstellbare Anzahl gleichzeitiger Client-Verbindungen.
Minimale Antwortzeiten erreicht man üblicherweise durch die Implementierung von Cache-Mechanismen. Bei Jeeves steht dafür ein RAM-Cache zur Verfügung, dessen Größe der Administrator festlegt.
Jeeves unterstützt Keep-alive von HTTP/1.1, das den ständigen Auf- und Abbau von TCP-Verbindungen vermeidet. Mit keepalive.count wird die Anzahl der HTTP-Ereignisse für eine TCP-Verbindung festgelegt; Anzahl Null schaltet diese Eigenschaft aus. Die erlaubte Standzeit (in Sekunden) für ruhende Verbindungen ist in keepalive.timeout zu spezifizieren.
Das Server-Logging umfaßt neben den altbekannten Access und Error Logs ein Event Log. Das fixiert generelle Ereignisse der Arbeit des HTTP-Servers wie Start und Exit sowie optional solche von Servlets (siehe Kasten Servlets). Für alle drei Protokollarten kann die Granularität in drei Stufen vorgegeben werden, was letztlich das Wachstum der Dateien mehr oder minder beschleunigt. Erst die Eingabe einer Null schaltet das entsprechende Logging endgültig aus.
Neue Zeichen setzt Sun mit der Einführung der Servlet-API, die bei Jeeves konsequenterweise zur Einführung speziell darauf ausgerichteter Administrationssektionen führte. Das sind zum einen das Servlet Aliasing und zum anderen das Servlet Loading. Anders als beim File Aliasing, bei dem virtuelle Pfade im URL auf reale Pfade im Dateisystem abgebildet werden, wird beim Servlet Aliasing eine Zuordnung von dynamischen Dokumenten zu den diese Dokumente erzeugenden Servlets vorgenommen (siehe Abbildung 2). Danach bewirkt zum Beispiel der URL http://ServerHostName:8080/date.txt das Starten von dateservlet, das wiederum ein Plaintext-Dokument mit dem aktuellen Server-Datum als Inhalt zurückgibt.
|
http://ServerHost:8080/ plus einem vollen Pfadnamen bewirken das Starten des entsprechenden Servlets. |
| Zwei Einträge genügen, um ein Servlet hinzuzufügen; in diesem Fall ist mit dem Aufrauf von http://ServerHost:8080/cal.html ein Kalender aufrufbar. |
|
In der Sektion Servlet Loading hat der Administrator die Möglichkeit, lokale oder entfernte Servlets zu laden. Dazu sind dessen Name (wie er beim Aliasing verwendet wird), der eigentliche Java-Klassenname, der Standort und eventuell Argumente anzugeben. Die Standortangabe local impliziert, daß das Servlet als Java-Bytecode im gleichnamigen Verzeichnis vorliegt. Für entfernte Servlets ist ein vollständiger URL auf deren Klassen anzugeben. Aus Abbildung 3 ist zu ersehen, daß Serverfunktionen wie Dateihandling und Administration in Servlets implementiert sind und diese neben dem bereits erwähnten dateservlet als Servlets angezeigt werden. Das Erweitern des HTTP-Daemons um eigene Servlets ist denkbar einfach, vorausgesetzt, sie liegen bereits als Java-Bytecode vor. In Abbildung 3 ist die ursprüngliche Liste um eine kleine Kalenderapplikation ergänzt.
Jeeves gestattet die Nutzung von Ressourcen über sogenannte Realms. Leider sind zur Zeit nur zwei solche Bereiche vorgesehen - defaultRealm und adminRealm. Das Hinzufügen von Realms wird erst in späteren Versionen Unterstützung finden. Benutzer und Gruppen sind unmittelbar an Realms gebunden, so daß jemand über zwei Accounts durchaus Zugang zu zwei unterschiedlichen Bereichen haben kann. Die eigentliche Nutzer- und Gruppenverwaltung stellt sich zwar clientseitig recht übersichtlich dar - ein Blick in die serverseitig dafür zur Verfügung stehenden Dateien lassen jedoch Zweifel an der effektiven Verwaltbarkeit eines größeren Nutzerkreises aufkommen. Sollte Jeeves als Web-Server in einem kommerziellen Umfeld dienen, sind DBM-Files mit Sicherheit die bessere Wahl. Derzeit regeln ACLs (Access Control Lists) den Zugriff auf Serverressourcen.
|
Jeeves läßt sich sowohl als HTTP- als auch als FTP-Proxy konfigurieren. |
Anders als bei Jigsaw ist bei Jeeves der Einblick in den Sourcecode verwehrt, so daß die eine oder andere Frage offenbleiben muß. Instabilitäten im Betrieb sowie Unzulänglichkeiten in der Konfigurierbarkeit der vorliegenden Version dürften am Alpha-Stadium liegen.
Die im Paket enthaltene Dokumentation der Server-API eröffnet die Möglichkeit, mit dem Framework zu experimentieren und verborgene Eigenschaften (oder Bugs) aufzudecken. Wem das zu aufregend ist, dem sei dringend die Servlet-API empfohlen, die ein ebensolches Potential in sich birgt wie seinerzeit CGI oder die Applet-API. Ob dieser Vorschlag der Servlet-API außerhalb der Sun-Welt angenommen wird, bleibt abzuwarten.
THOMAS PARADIES
ist wissenschaftlicher Mitarbeiter am Institut für Praktische Informatik und Medieninformatik der TU Ilmenau und beschäftigt sich mit WWW, CSCW und Objektorientierung.
Literatur
[1] Reiner Klute; Puzzle in 14 Minuten; Jigsaw: der neue Server des World-Wide-Web-Konsortiums; iX 9/96, S. 108 ff.
| iX-TRACT |
|
Dieser Text ist der Zeitschriften-Ausgabe 01/1997 von iX entnommen.
Parallelprogrammierung - die Kunst der Multi-Core-Nutzung
Agile ALM - agile Praktiken im Application Lifecycle Management
Webentwicklung - Applikationen für mobile Clients