Im Abschnitt <servlet> können der Name des Servlets und die dazugehörige Servlet-Klasse definiert werden. Der Abschnitt <servlet-mapping> ordnet ein benanntes Servlet einem URL-Pattern zu. Diese Abschnitte entsprechen dem Aufruf handler.addHandler() in der hart codierten Version. Zur Initialisierung einer Web-Applikation wird die Erstellung des HTTPServers entfernt und ein Handler mit folgendem Startup-Code hinzugefügt:
Man startet einen generischen Jetty-Server und lässt ihn an Port 8000 warten. Dann muss ein WebApplicationContext mit der Root „/“ erstellt und der Server informiert werden, dass er die Web-Applikation im Verzeichnis webapp finden kann. Die Referenz „tasks“ setzt man direkt in den WebApplicationContext, um die Tasks-Instanz an das Servlet zu übergeben.
Eine Web-Applikation unterstützt nun unter anderem JSP, also müssen den Bibliotheken der Jasper JSP-Compiler und die entsprechende Runtime-Umgebung, jasper-compiler.jar und jasper-runtime.jar, hinzugefügt werden; dazu sind wiederum ant.jar und commons-el.jar erforderlich. Alle diese Dateien findet man in der Jetty Distribution. Nach all diesen Aktionen kann man ToDoTasks wieder ausführen und unter http://localhost:8000/report auf den Report zugreifen – alles wie beim vorherigen Lauf. Das klingt vielleicht noch nicht sehr beeindruckend; es wurden einige Zeilen des Startup-Codes durch eine geringere Zahl anderer Zeilen ersetzt und eine XML-Datei ergänzt. Dies liegt jedoch daran, dass der Web-Applikationskontext noch kaum verwendet wurde. Im Verzeichnis webapp kann man eine Datei index.html hinzufügen, um Benutzer zu den verfügbaren Reports zu leiten. Wurde diese Datei ergänzt, kann nun auf http://localhost:8000/ zugegriffen werden und es lässt sich ohne zusätzliches Coding eine Startseite anzeigen. Außerdem lassen sich JSP-Seiten einstellen, allerdings kann mit der Konfiguration in diesem Beispiel nur grundlegendes JSP verwendet werden. Im Verzeichnis webapp findet man auch eine einfache Version des Report-Servlets als jspreport.jsp. Der gesamte Inhalt des Verzeichnisses webapp steht auf dem Server zur Verfügung – mit Ausnahme des Verzeichnisses WEB-INF, denn die Konfiguration muss nicht unbedingt allgemein zugänglich sein.
Bei der Erstellung der Applikation muss darauf geachtet werden, das Verzeichnis webapp mit der JAR-Datei mitzuliefern. Allerdings kann das Verzeichnis webapp in einer Datei .WAR (Web-ARchivdatei) archiviert werden. Diese Datei .WAR kann dann im addWebApplication-Aufruf anstelle des Pfads zum Verzeichnis angegeben werden:
Zur Erstellung der WAR-Datei verwendet man das standardmäßige JAR-Utility; die WAR-Datei ist einfach eine JAR-Datei mit der Erweiterung .war. In diesem Fall kann man zur Erstellung der WAR-Datei im Projektverzeichnis einfach folgende Anweisung ausführen:
Mit dem Flag -C wird das Verzeichnis vor dem Starten des Archivs in webapp geändert; die Anweisung „jar cvf webapp.war webapp“ würde einfach ein Archiv erstellen, bei dem alles in einem Ordner WEBAPP innerhalb der WAR-Datei gespeichert wäre, und dies würde beim Laden nicht korrekt funktionieren.
Die Applikation ToDoTasks sieht nun schon ganz gut aus mit dem eingebetteten Web-Server und den Web-App-Anbindungen, doch die Web-Schnittstelle mit nur einem unsortierten und ungefilterten Report ist noch zu optimieren. Darauf wird im nächsten Artikel näher eingegangen.
Der Programmcode für dieses Tutorial steht zum Download bereit.
Neueste Kommentare
Noch keine Kommentare zu Java-Applikationen für Web-fähige Anwendungen
Kommentar hinzufügenVielen Dank für Ihren Kommentar.
Ihr Kommentar wurde gespeichert und wartet auf Moderation.