Java
Servlets mit tomcat 3.1
|
Home
|
Einleitung:
Servlets ...
- erzeugen dynamisch Webinhalte
- sind von einem Servlet container verwaltete Java Klassen
- werden einmal geladen (nach dem ersten Request), hernach stehen sie (bis zum Zeitpunkt ihrer expliziten Zerstörung) für die Bearbeitung weiterer Request's bereit
Schema ...
Erklärung zum Bild...
die für ein Servlet bestimmte HTTP-Anfrage, wird an einen Webserver
geschickt... dieser erkennt an deren URI2, dass die Anfrage an den
Servlet container weitergereicht3 werden muss...
dieser wiederum findet und startet dann das entsprechende
Servlet, welches in die JVM4 geladen wird, dabei werden dann auch
ein Request- und ein Response-Objekt erzeugt...
das Servlet benutzt diese um die Anfrage auszuwerten, zu
bearbeiten und die Antwort zurückzugeben (weitere evtl.
benötigte Klassen werden unabhängig vom Servlet container von
der JVM gefunden, geladen und interpretiert).
Wenn das Servlet die Bearbeitung einer Anfrage abgeschlossen hat,
erzeugt der Servlet container aus dem Response-Objekt eine
HTTP-Antwort und übergibt diese und die Kontrolle für diese
Anfrage wieder an den Webserver...
und der schickt sie schliesslich zurück zum client.
Ein Servlet
Container ...
- enthält und
verwaltet die Servlets
- kann laufen
...
- als standalone
servlet container (einfacher, aber weniger Leistung)
- im Webserver-Prozess
(am Schnellsten, da keine Prozesswechsel!)
- ausserhalb
des Webserver via IPC (z.B. TCP/IP) auch auf anderem host mögl.
- oder
als Teil eines Application Servers
- dekodiert
MIME-basierte Anfragen an und formatiert MIME-basierte
Antworten für den Webserver
- muss HTTP/1.0 (RFC 1945)
und sollte HTTP/1.1 (RFC 2068) unterstützen
- besteht selbst
aus zahlreichen Java packages
Pro und Contra
Vorteile:
- kann mit den gängigen Webservern eingesetzt werden (Apache, IIS, Netscape...)
- sehr schnell, weil die Servlet-Engine ständig läuft und weil die Instanzen aufgerufener Servlets weiterlaufen und für Anfragen sofort bereitstehen
- persistente Datenbankverbindungen und Verbindungspools
- Prozesswechsel bei der Verarbeitung von Anfragen entfallen (nur bei Webserver-Integration)
Nachteile:
- bei einem Crash der Servlet-Engine kann auch der Webserver/Applicationserver mitbetroffen werden (nur bei Webserver-Integration bzw. Applicationservern)
- verbraucht bei großer Last großen Teil der Serverleistung
Wann bzw. warum ist
es sinnvoll Java Servlets einzusetzen ?
- wenn die
gleichen oder ähnlichen Webanwendungen auf
unterschiedliche Systeme ausgeliefert werden sollen:
Stichwort: Plattformunabhängigkeit
- weil
zahlreiche und mächtige API's vorhanden sind
(z.B. für CORBA und RMI, abstrakte Datentypen und zugehörige
Algorithmen, reguläre Ausdrücke, Telefonie, Application Server,
Datenbankzugriffe etc.)
- in sehr
großen und komplexen Projekten, weil sich dort
objektorientierte Entwicklung besser bewährt hat
(OOA/OOD, Tools für Projektmanagement und
Qualitätssicherung...)
- wenn auf
wiederverwendbaren und leicht adaptierbaren, gut les- und
wartbaren code Wert gelegt wird (doch Vorsicht diese
altbekannten Argumente pro Objektorientierte Entwicklung
ziehen nur, wenn deren bewährte Methoden auch angewandt
werden; man lernt das übrigens nicht von heut auf morgen5)
- Java ist v.a.
bei komplexen Anwendungen schneller als Skriptsprachen
- ;-) wenn man Java
schon kann u. keinen Bock hat schon wieder eine neue Skriptsprache zu
lernen
1 Servlet container der Apache Software Foundation
2 Uniform Resource Identifier
3 TCP-Verbindung über den connector
4 Java Virtual Machine
5 ;-) hab gehört, dass ein paar unter den FH-Absolventen später i.d.
Softwareentwicklung landen sollen - wahrscheinlich gibt es
deshalb an der FH 20 SWS Vorlesungen über Softwareentwicklung
und Programmierung, aber nur 30 SWS über Mechanik,
Schwingkreise, Differentiale und andere unserer Allgemeinbildung
dienender Wissensgebiete. Aber zum Glück können wir das ja in
den Praxissemestern mit dem wochenlangen Bohren, Schleifen und
Feilen nochmal ausgleichen. ;-) "was e Glick - jô mr kennt
scho faschd saga Dobbelglick"
Java
Servlets mit tomcat 3.1
|
Home
|