Zurück

Akadia Information Technology


Möchten Sie eine (kleine) Live-Demonstration, dann klicken Sie auf die untenstehenden Links !

Im «Internet-Zeitalter» wird die Abfrage und Darstellung von Informationen aus Datenbanken immer wichtiger. Dabei führen verschiedene Wege von der Datenquelle zum Anwender. Wir haben die drei serverbasierten Varianten CGI/DBI/Perl, Apache/JServ und Oracle Application Server untersucht und in Kundenprojekten erfolgreich eingesetzt.

CGI/DBI/Perl für kleinere Projekte. DBI ist eine neutrale Datenbank Schnittstelle für Perl5. Datenbank Driver für Oracle und viele weitere Datenbanken sind in Form von Perl Modulen vorhanden. Weitere Angaben finden Sie unter: http://dbi.perl.org/index.html

Apache/JServ für mittlere Projekte mit komplexeren Abfragen und Objektmodellen. Im folgenden Beitrag wollen wir diese Variante näher vorstellen.

Oracle Application Server 4.0 für umfangreiche Projekte.

Apache/JServ

Apache/JServ basiert auf Java Servlets und bietet ein Maximum an Plattformunabhängigkeit. Wir haben den Einsatz auf NT4 und RedHat Linux 6.0 getestet. Portierungen auf andere Unix Systeme wie SUN Solaris 2.6 sind von anderen Institutionen getestet worden. Apache/JServ unterstützt die Entwicklung von echten Multi-Tier Applikationen. Mit Apache steht ein sehr robuster und weit verbreiteter Web-Server zur Verfügung. Zu betonen ist weiterhin, dass alle Komponenten im Web zur Verfügung stehen und heruntergeladen werden können (Siehe Download Site in untenstehender Tabelle). Eine oft genannte Kritik, dass Java «langsam» ist, trifft beim Einsatz von Java als Servlets weniger in den Vordergrund, da Servlets nach dem Laden im Speicher gehalten werden. Als besonderes Feature betrachten wir die Möglichkeit, zeitintensive Operationen wie beispielsweise das Öffnen einer JDBC Datenbank Verbindung in einer Java Klasse zu kapseln. Wird die Web Applikation gestartet, so wird diese Klasse in den Speicher geladen und die DB Verbindung bleibt für weitere HTTP Requests geöffnet, dadurch erzielt man grosse Performance Gewinne.

  

Technologie

Als Web Server wird Apache 1.3.6 eingesetzt. Dieser unterstützt auf ideale Art und Weise Apache/JServ. JServ setzt sich aus zwei Hauptkomponenten zusammen, dem eigentlichen Servlet Engine Server und einem Web Server Modul, welches die Kommunikation mit dem Web Server erlaubt und entsprechende Anfragen verarbeitet

Ablauf

Der HTTP Client sendet mittels URL einen Request an den Web Server, beispielsweise https://www.akadia.com/jsp/servlet/JdbcTest. Der Web Server analysiert den URL. Ist darin der Name einer Servlet Zone enthalten, wird der Request an das Modul Apache Module mod_jserv weitergeleitet. In diesem Modul wird die Verbindung zum entsprechenden Servlet Manager aufgebaut in der Form: <protocol>://<host>:<port> und autorisiert.

Der Servlet Manager instanziert ein Objekt der Klasse JServConnection, welches den Request weiter verarbeitet, dabei das gewünschte Servlet ausführt und die Antwort an mod_jserv zurückgibt. Danach wird die Verbindung geschlossen, der Thread sowie das Objekt selber werden im Memory freigegeben.

Servlet Zone

Eine Servlet Zone definiert eine Menge von zusammengehörenden Servlets bzw. Packages (Servlet Bibliotheken), welche in demselben Repository abgelegt sind und über dieselben Konfigurationsparameter verfügen. Jede Servlet Zone wird über einen eigenen Servlet Manager verwaltet. Es können mehrere Servlet Zonen (auf verschiedenen Servern) definiert und konfiguriert werden. Jede Servlet Zone verfügt über ein eigenes Konfigurations-File. Beim Starten von Apache werden die Servlet Zonen in den Web Server File Space "gemountet".

Java Servlets

Java Servlets sind Module, welche in einem Request / Response (Anfrage / Antwort) orientierten System ausgeführt werden, wie z.B. in einem Java-fähigen Web Server wie Apache. Im Servlet können Daten (z.B. aus einer HTML-Form) entgegengenommen und anhand der definierten Business Logic verarbeitet werden. Das Servlet API (Application Programming Interface), welches zur Implementation von Servlets verwendet wird, ist soweit abstrahiert, dass keine bestimmten Annahmen über das Laden des Servlets oder dessen Run Time Environment vorausgesetzt werden: Damit steht der Einbettung desselben Servlets in unterschiedlichen Web Servern nichts im Weg.

JDBC

Innerhalb des Servlets können Daten von der Datenbank abgefragt oder auf diese geschrieben werden. Dazu kann einer der drei JDBC-Treiber (Thin, OCI7, OCI8) verwendet werden. Die Datenbank-Verbindung kann dabei temporär auf- und wieder abgebaut oder permanent gehalten werden. Dazu sind Kenntnisse über den Lebenszyklus eines Servlets notwendig:

  1. Das Servlet wird geladen (Methode init()). Dies erfolgt entweder beim erstmaligen Aufruf der Servlets oder aber beim Start von
    Apache / JServ. Servlet spezifische oder globale Parameter können eingelesen und verarbeitet werden.

  2. Nachdem das Servlet geladen und initialisiert worden ist, kann die Methode service() ausgeführt werden. Bei HTTP Servlets unterstützt diese Methode die HTTP-Interaktionen GET (Methode doGet()), POST (doPost()), PUT (doPut()) und DELETE (doDelete()).

  3. Das Servlet bleibt solange geladen, bis es aufgrund eines System
    Request entfernt wird. Dabei wird die Methode destroy() ausgeführt, um allfällige Aufräumarbeiten auszuführen.

Installation

Apache

Apache 1.3.6 ist im Umfang von RedHat Linux 6.0 bereits vorhanden und muss nicht extra installiert werden. Muss Apache nachträglich installiert werden, so ist darauf zu achten, dass die Apache Module dynamisch geladen werden können (DSO-Support). Weiterführende Hinweise finden Sie auch auf unserer Website.

JRE, JDK, JSDK und JServ

JRE ist die Runtime Java Umgebung, JDK ist das Java Development Kit und JSDK wird zur Entwicklung und zum Testen von Servlets verwendet. Es wird dringend empfohlen, exakt die Version JSDK 2.0 im Zusammenhang mit JServ 1.0 zu verwenden. Alle Sourcen stehen im Web zur Verfügung. Man beachte, dass für RedHat Linux 6.0 unbedingt die glibc und nicht die älteren libc5 Souren heruntergeladen werden. Die TAR Archive werden in einem beliebigen Directory ausgepackt, in das Ziel­directory verschoben und via Symbolic Link dem System über die PATH Umgebungsvariable bekannt gemacht. Bei der Installation von JServ kann der vorhandene Apache 1.3.6 Web Server von RedHat Linux 6.0 verwendet werden.