Eine Webapplikation erstellen und deployen
Eine Webapplikation haben wir ja schon, nämlich diesen Kurs. Allgemein gesagt zeichnet sich eine Webapplikation durch eine bestimmte Verzeichnisstruktur aus, deren Merkmale sich wie folgt definieren lassen:
-
Eine Webapplikation myapp hat ein Basisverzeichnis, das sich in der Regel inCATALINA_HOME/webapps/myapp befindet. In diesem Verzeichnis und seinen Unterverzeichnissen befindet sich der statische Content sowie die JSPs. Eine Webapplikation benötigt stets ein WEB-INF Verzeichnis unterhalb des Basisverzeichnisses. Dieses Verzeichnis enthalt den Deployment-Descriptor (web.xml) sowie ggf. weitere Konfigurationsdateien z.B. für Taglibs.
-
Unterhalb von WEB-INF kann sich ein Verzeichnis classes befinden, in dem sich kompilierte Java-Klassen sowie weitere Ressourcen befinden können. Das Verzeichnis wird vom Server automatisch dem Classpath hinzugefügt, sodass diese Klassen immer gefunden werden. Es ist ein akzeptabler Platz, um z.B. Property-Files unterzubringen, die über den Class-Loader geladen werden sollen.
-
Unterhalb von WEB-INF kann sich ein Verzeichnis lib befinden. Alle Java-Archive (JAR-Dateien) in diesem Verzeichnis werden ebenfalls automatisch dem Classpath hinzugefügt, ihr Inhalt wird vom Server gefunden. Andere Dateien werden in diesem Verzeichnis nicht gefunden.
-
Unterhalb von WEB-INF kann sich auch ein Verzeichnis tmp befinden, das der Server für temporäre Dateien nutzt.
Unsere Webapplikation ist gegenwärtig deployed durch eine einfache xml-DateiCATALINA_HOME/webapps/jspkurs.xml, die auf elegante Weise Tomcat anweist, das Basisverzeichnis der Webapplikation woanders zu suchen:
Code: Deployment durch xml-Datei: jspkurs.xml
<Context path="/jspkurs" docBase="c:/jspkurs/"
debug="1" privileged="true" reloadable="true"/>
Dies ist ein spezielles Feature von Tomcat, das andere Server nicht unbedingt in der Form mitmachen. Wir haben das so eingerichtet, um nicht in Tomcats Verzeichnissen unsere Applikation entwickeln zu müssen.
Wenn wir nun unsere Applikation fertiggestellt und leidlich getestet haben (und sie funktioniert), wollen wir sie ja auch auf den Präsentations- oder Liveserver bringen. Wir könnten dazu einfach alles nach CATALINA_HOME/webapps/kurs kopieren und könnten dann den ganzen Kurs unter localhost/kurs aufrufen.
Wir wollen einen etwas professioneller aussehenden Weg wählen und ein sogenanntes Web-Archive (WAR) erstellen. Eine war-Dateien ist so ähnlich wie die jar-Datei, die wir kennengelernt haben, und sie enthält in gezippter Form unsere gesamte Webapplikation.
Das JDK bringt ein Tool mit, das diese Dateien herstellt. Öffnen Sie bitte eine Konsole und wechseln Sie in das Basisverzeichnis unserer Webapplikation (c:\jspkurs\web). Das Tool heißt jar, bitte geben Sie ein:
jar -cf kurs.war .
Einzelheiten zum jar-Tool in der JDK-Dokumentation unter Tools/Basic.
Den Punkt am Ende nicht vergessen. Sie erhalten nun eine Datei kurs.war, die Sie nach CATALINA_HOME/webapps kopieren können. Tomcat merkt, dass dort etwas passiert ist, entpackt diese Datei und stellt ihren Inhalt unter http://localhost/kurs zur Verfügung.
Das Schöne daran ist, dass Sie diese WAR-Datei unverändert auf jeden Server, der die J2EE Spezifikation erfüllt, deployen können, indem Sie sie einfach in das entsprechende webapp-Verzeichnis kopieren. Allerdings sind nicht alle Server so konfiguriert, dass sie das Archiv automatisch bemerken und entpacken. In Produktionsumgebungen muss hier vielfach ein Installationsservlet aufgerufen oder der Server neu gestartet werden.