Inhaltsverzeichnis

Vorwort 5

Web Service Tutorium - Erstellung eines Gästebuchs 6

Service-Projekt erstellen. 14

XSD: Gästebuch-Schema erstellen. 16

WSDL: Gästebuch-Service-Schnittstelle erstellen. 22

Generierung der Java-Klassen. 32

Service: Implementierung des Gästebuch-Web Services 53

Implementierung des Gästebuch-Clients 60

Grundlagen für das Verständnis eines Web Services 94

Die XSD – Typen-Entwicklung in XML. 94

Die WSDL – Aufbau eines SOAP Services 101

Apache CXF – automatische Erstellung eines Web Services 109

Servlets - Die Grundlagen. 125

Servlet-Container 125

Packages 126

Häufig verwendete Interfaces und Klassen. 127

HTTP-Grundlagen. 130

Aufbau der URLs 131

HTTP-Methoden. 131

Wichtige HTTP-Statuscodes 133

JSP – Grundlagen. 136

Die Syntax von JSPs und ihre Bestandteile. 137

Implizite Objekte. 141

Client-Anfragen. 147

Beans in JSPs 149

JSP-Standardaktionen. 154

Fehler- und Ausnahmebehandlung. 157

Expression Language. 160

Java Standard Tag Library (JSTL) 164

Internationalisierung. 165

Servlet-Filter 167

Abbildungsverzeichnis 170

Vorwort

Web Services begegnen uns öfter als wir vermuten. Meist verbergen sie sich hinter anderen Begriffen wie „App“ oder „Cloud“. Wie man das Kind auch letztlich nennt: Es geht hier immer darum, dass ein Server, der aus dem Internet leicht erreichbar ist, einen Dienst bereitstellt, der von Clients genutzt werden kann. Diese Clients sind oft erkennbar als „Webbrowser“ oder aber Anwendungen, die im Internet Anfragen stellen können und auf eine Antwort warten.

Ziel dieses Buches ist es zu zeigen, was hinter einem Web Service steckt. Wir wollen mit einfachen Mitteln einen Service aufbauen, der auf einem Application Server wie Tomcat laufen kann. Dann wollen wir verschiedene Clients ausprobieren, um den Service zu testen.

Da es uns nicht darum geht, eine besonders interessante Spezialanwendung zu entwickeln, haben wir uns entschieden, das gute alte Beispiel eines Gästebuches neu zu beleben. Das hat einfache Gründe. Alles, was wir brauchen, um einen Dienst mit Eingaben über ein Formular und Ausgaben auf einem Bildschirm zu entwickeln, lässt sich hier leicht darstellen. Und unser Ziel ist letztlich nicht das Gästebuch, sondern die Kenntnis über den Bau eines Web Services.

Nach dem zügigen Aufbau von Server- und Client-Programmen schauen wir uns die Theorie an, die hinter dem Ganzen steckt. Die Beleuchtung des Hintergrundes nimmt dabei den größten Teil des Buches ein.

Mit dem Gesamtverständnis, das dieses Buch vermitteln will, kann der interessierte Leser schnell selbst einen Web Service programmieren. Dabei ist es egal, ob er eine Suchmaschine im Internet anbieten will, einen neuen Webshop oder eine App für Smartphone – mit den passenden Tools und genauer Planung des Services sollte das sofort gelingen.

Web Service Tutorium - Erstellung eines Gästebuchs

Dieses Tutorium beschreibt, wie ein Gästebuch als Web Service erstellt wird. Dabei verwenden wir die Werkzeuge Eclipse, Apache CXF und Apache Tomcat 7.0. Zunächst bauen wir einen Dienst auf dem Server auf. Zum Test der Funktionsweise des Gästebuch-Web-Services entwickeln wir dann eine Java-Client-Applikation, die den Web Service benutzt. Wir verfolgen den sogenannten Top-Down-Ansatz (WSDL-to-Java). Dabei wird zuerst die Service-Schnittstelle festgelegt und anschließend auf Basis dieser Schnittstelle die Service-Implementierung angelegt.

Dieses Tutorium setzt voraus, dass die Java JDK (hier: jdk1.7.0_17-64bit) und Eclipse (hier: eclipse-4.3“ aus eclipse-jee-kepler-M5-win32-x86_64) installiert ist, und dass weiterhin Eclipse korrekt mit Tomcat (hier: apache-tomcat-7.0.37-64bit) verbunden wurde. Dazu nehmen wir eine Basiskonfiguration innerhalb von Eclipse vor.

Eclipse bietet die Möglichkeit Zeilennummern für Quellentexte auszugeben. Wir wählen im Eclipse-Menü Window -> Preferences -> General -> Editors -> Text Editors aus und setzen den Haken beim Parameter Show line numbers. Drücken Sie dann auf den Schalter Apply am Ende des Fensters.

Abbildung 1: Editor in Eclipse konfigurieren - Zeilennummern

Eclipse hat bereits eine Java-Umgebung als Standardumgebung eingetragen. Wir wollen aber die von uns installierte JDK 1.7.0 Version 17 verwenden. Dazu legen wir nun eine neue Java JRE in Eclipse an: Wir wählen im Eclipse-Menü die Kombination Window -> Preferences -> Java -> Installed JREs aus. Drücken Sie auf den Schalter Add… (Abbildung 2) und danach im folgenden Fenster auf Standard VM und Next. Wählen Sie mit Hilfe des Schalters Directory… eine JRE-Home aus und jetzt klicken Sie auf den Schalter Finish (Abbildung 3).

Abbildung 2: Neue JRE einfügen

Abbildung 3: JRE-Umgebung auswählen

Aktivieren Sie das Feld neben dem Namen der zu verwendenden JDK-Version (Abbildung 4). Klicken Sie dann auf den OK-Schalter, um diese Einstellung bereits zu speichern. Vergessen Sie außerdem nicht, die Umgebungsvariable JAVA_HOME in den Systemeinstellungen zu setzen.

Abbildung 4: Installierte JRE in Eclipse auswählen

Wir drücken im Eclipse-Menü Window -> Preferences -> Server -> Runtime Environment den Schalter Add..., um die Tomcat-Umgebung einfügen zu können (Abbildung 5). Wählen Sie Server Apache -> Apache Tomcat 7.0. Klicken Sie auf Next (Abbildung 6).

Abbildung 5: Server Runtime Environments in Eclipse konfigurieren

Abbildung 6: Apache Tomcat v7.0 auswählen

Geben Sie das Tomcat- Installationsverzeichnis ein sowie die JRE-Umgebung. Klicken Sie dann auf den Schalter Finish (Abbildung 7). Damit ist in Eclipse die Tomcat-Umgebung spezifiziert (Abbildung 8). Setzen Sie unbedingt für Tomcat auch die Umgebungsvariable CATALINA_HOME in den Systemeinstellungen.

Abbildung 7: Tomcat- Installationsverzeichnis und JRE-Umgebung konfigurieren

Abbildung 8: Tomcat-Konfiguration in Eclipse

Nun wird noch das Werkzeug für die Erstellung des Web Services benötigt. Laden Sie Apache CXF 2.x aus dem Internet herunter. Danach entpacken Sie das Archiv (apache-cxf-2.7.2.zip oder eine neuere Version). Merken Sie sich unbedingt das Installationsverzeichnis. Setzen Sie auch die Umgebungsvariable CXF_HOME auf das Root-Verzeichnis der CXF-Installation.

Abbildung 9: CXF 2.x Preferences in Eclipse konfigurieren

Wir wählen im Eclipse-Menü Window -> Preferences -> Web Services -> CXF 2.x Preferences -> Add... aus (Abbildung 9). Geben Sie das Apache CXF-Installationsverzeichnis ein und jetzt klicken Sie auf den Schalter Finish. Wenn Sie die Umgebungsvariable CXF_HOME korrekt eingegeben haben, dann findet Eclipse die Version und den Type selbständig (Abbildung 10).

Abbildung 10: CXF- Installationsverzeichnis und Version konfigurieren

Aktivieren Sie das Kontrollfeld der Version des Apache CXF und klicken Sie auf Apply am Ende des Unterfensters (Abbildung 11).

Abbildung 11: CXF 2.x Preferences in Eclipse bestätigen

Die Konfiguration Java2WS ist zur Erstellung der WSDL-Datei gedacht, wenn man zuerst den Java-Code erstellt. Hier aktivieren wir die Schalter Generate Client und Generate Server (Abbildung 12).

Abbildung 12: Konfiguration für Java2WS

Für unsere Zwecke benötigen wir die Konfiguration WSDL2Java (Abbildung 13). Außerdem aktivieren wir die ersten fünf Schalter im Reiter JAX-WS zur JAX-WS Annotation Generation (Abbildung 14).

Abbildung 13: Konfiguration für WSDL2Java

Abbildung 14: Konfiguration für JAX-WS

Jetzt bereiten wir die Tools für den Einsatz in Eclipse vor. Wählen Sie dazu im Menü die Kombination mit der Folge Window -> Preferences -> Web Services -> Server and Runtime aus (Abbildung 15). Wählen Sie die Tomcat- sowie die Apache CXF-Umgebung in den beiden Auswahlfeldern aus, klicken Sie auf den Schalter Apply und danach auf den Schalter OK.

Abbildung 15: Tomcat-Server und CXF-Umgebung in Eclipse setzen

Öffnen Sie die Ansicht Servers im Eclipse-Menü mit der Kombination Window -> Show View -> Servers (Abbildung 16). Dann legen Sie einen neuen Server in dieser Server-View an. Klicken Sie in der View die rechte Maustaste an und wählen Sie New -> Server aus. Wählen Sie den Apache Tomcat v7.0 Server aus und jetzt klicken Sie auf den Schalter Finish.

Abbildung 16: Server in Eclipse aktivieren

Damit sind alle vorbereitenden Konfigurationen in Eclipse abgeschlossen.

Service-Projekt erstellen

Die Erstellung eines Projektes beginnt in Eclipse mit der Auswahl und Einrichtung eines speziellen Projektes. Hierfür hat Eclipse einige Varianten zur Auswahl.

Erstellen Sie in Eclipse ein Web-Projekt. Dazu wählen Sie im Kontext-Menü der Projektansicht die Kombination File -> New -> Project... und danach die Kombination Web -> Dynamic Web Project (Abbildung 17). Klicken Sie auf den Schalter Next.

Abbildung 17: Neues Projekt anlegen

Wir wollen den Service GuestBookService nennen. Die Target Runtime sollte bereits auf Apache Tomcat v7.0 stehen. Klicken Sie auf den Schalter Finish.

Nun kann die eigentliche Arbeit losgehen. In den folgenden Unterkapiteln wollen wir die Datentypen definieren und unseren Web Service spezifizieren. Im Anschluss daran lassen wir Eclipse den Quellcode generieren und passen diesen im Nachgang an unsere Anforderungen an.

Abbildung 18: Dynamic Web Projekt einrichten

XSD: Gästebuch-Schema erstellen

Für die XML-Dateien benötigen wir einen eigenen Ordner im Projektverzeichnis. Wählen Sie also im Kontextmenü der Projektansicht New -> Folder. Geben Sie den Ordnernamen als xml ein und klicken Sie auf den Schalter Finish (Abbildung 19). Im XML-Verzeichnis wollen wir unser XML-Schema ablegen. Wählen Sie aus dem Kontextmenü dieses XML-Ordners heraus die Kombination New -> Other… -> XML -> XML Schema File. Klicken Sie jetzt auf den Schalter Next (Abbildung 20).

Abbildung 19: Ordner für XML-Dateien anlegen

Abbildung 20: XML-Schema-Datei anlegen

Wir wollen unser Schema GuestBook.xsd nennen (Abbildung 21).

Abbildung 21: XML-Schema mit Namen GuestBook.xsd definieren

Abbildung 22: XML- Schema-Namespace verändern

Ändern Sie den Schema-Namespace mit Rechtsklick über dem Schema und Klick auf Show properties (Abbildung 22):

Abbildung 23: Schema-Namespace eingeben

Wir wollen nun ein Gästebuch-Schema-Typ namens GuestBookType erstellen, dazu klicken wir mit der rechten Maustaste über Types und wählen Add Complex Type aus.

Abbildung 24: Erstellen eines Gästebuch-Schema-Typs

Auf den neu erstellten Typ klicken wir doppelt und fügen dann ein Gästebucheintrag-Element zu diesem Gästebuch-Typ hinzu, indem wir mit der rechten Maustaste auf GuestBookType klicken und danach Add Element anklicken. Das Element soll nun den Namen entry erhalten.

Abbildung 25: Gästebucheintrag-Element hinzufügen

Erstellen Sie einen neuen Schema-Typ mit dem Namen GuestBookEntryType, klicken Sie dazu zunächst mit der rechten Maustaste und dann durch die Kombination string -> Set Type -> New... (Abbildung 26).

Abbildung 26: Neuen Schema-Type definieren

Fügen Sie dem GuestBookEntryType ein Attribut mit dem Namen ID (mittels Add Attribute) und Elemente (mittels Add Element) mit den Namen name, eMail und message hinzu.

Abbildung 27: Name des neuen Schema-Typs eingeben

Abbildung 28: Attribut und Elemente eintragen

Abbildung 29: Definitionen des Schema-Typs

Die Multiplizität des Gästebuch-Typs stellen Sie nun auf 0..* (Zero or more).