Читать книгу Web Services mit Apache CXF - Axel Eberhard Leistner - Страница 8
Generierung der Java-Klassen
ОглавлениеNun kann Eclipse für uns automatisch Schema-Klassen, Service-Interface und Client-Stubs generieren. Klicken Sie im Verzeichnisbaum unterhalb xml
zuerst einmal auf die WSDL-Datei GuestBook.wsdl
. Mit Rechtsklick wählen Sie dann New -> Other... -> Web Services -> Web Service
aus (Abbildung 53).
Abbildung 53: Aus der WSDL heraus einen Web Service anlegen
Wir wählen als Web service type
den Top-Down-Ansatz, um aus einer WSDL den Java-Code zu erstellen. Die Service definition
ist dabei unsere gerade erstellte WSDL-Datei unter dem Namen /GuestBookService/xml/GuestBook.wsdl
.
In der Konfiguration sehen wir bereits den zu Beginn eingerichteten Server Tomcat 7.0 und das Werkzeug Apache CXF 2.x sowie das Service project
mit dem Namen GuestBookService
(Abbildung 54).
Abbildung 54: Top-Down Erstellung der Web Service Quellendateien
Damit wir den Dienst gleich testen können, legen wir hier auch einen Client an. Dabei werden alle notwendigen Projektdateien für einen Java-Client erstellt. Ziehen Sie dazu den Regler am linken Rand der Client-Konfiguration bis ganz nach oben. Klicken Sie zusätzlich den Schalter Monitor the web service
an, um die Ergebnisse auch in einem TCP/IP-Monitor überprüfen zu können.
Klicken Sie dann dreimal auf den Schalter Next
. Klicken Sie im danach geöffneten Fenster auf den Schalter Start Server
und dann auf Finish
.
Nachdem alle Dateien erstellt und übersetzt wurden, sehen Sie eine Darstellung des Web Service Explorer
, von dem aus die Anwendung sofort getestet werden kann (Abbildung 55). Im Fenster Actions
sehen Sie die eingerichteten Operations
mit den Namen getEntries
und insertEntry
. Diese Operationen können Sie im Navigator
unterhalb der GuestBookSOAP
aufklappen und danach im Actions
Fenster die Eingaben zum Test der Anwendungen eingeben.
Abbildung 55: Ergebnis der Erstellung von Interface etc.
Die Ausgaben sehen wir uns anschließend im Status-Fenster an sowie in der Tomcat-Server-Console und im TCP-Monitor.
Öffnen Sie also nun die Einträge im Navigator mit der Sicht des WSDL Main
unterhalb des Eintrags GuestBookSOAP
(Abbildung 55).
Geben Sie jetzt im Body-Fenster ein paar Daten ein, die Sie als Nachricht im Gästebuch ablegen möchten (Abbildung 56).
Im Status
Fenster (Abbildung 57) sehen Sie nun die erstellte SOAP-Nachricht nach Klick auf den Schalter Source
. Dabei interessieren uns hier die Angaben im Body-Block der XML-Struktur. Was wir hier sehen, ist die Nachricht, die ein Client an den Server des Web Services abgesendet hat. In den folgenden Bildschirmseiten werden wir die Wirkung des Web Service Dienstes weiter untersuchen.
Abbildung 56: Eingabedaten für Methode insertEntry
Abbildung 57: SOAP für die Eingabe der Daten
Auch auf der Console
sehen Sie die Aktivitäten rund um diese Anwendung (Abbildung 58).
Abbildung 58: Ausgabe der Server-Console
Abbildung 59: Ausgabe des TCP/IP-Monitors
Ein Blick auf den TCP/IP-Monitor zeigt den Request auf der linken Seite und die Erfolgsmeldung rechts: Accepted
(Abbildung 59).
Nun versuchen wir, eine Ausgabe der in der Anwendung gespeicherten Nachrichten zu erhalten. Dazu wählen Sie die Anwendung getEntries
und klicken auf den Schalter Go
(Abbildung 60).
Abbildung 60: Test der Ausgabe von Daten
Die Ausgabe entspricht dabei wohl noch nicht dem, was Sie erwarten würden: Hier ist nicht die Nachricht zu sehen, die Sie gerade eingegeben haben, sondern die Testnachricht, die bei der Erstellung des Clients angelegt wurde. Zur Änderung der Ausgabe müssen wir zunächst den Source-Code bearbeiten.
Im Status-Fenster sehen wir eine formatierte Ausgabe der Rückantwort unseres Web Services (Abbildung 61).
Abbildung 61: Ausgabe der Ergebnisse aus Methode getEntries
Wenn Sie dann auf den Schalter Source
rechts oben im Status-Fenster klicken, sehen Sie die XML-Darstellung der abgesendeten Anforderung sowie die Rückantwort (Abbildung 62).
Abbildung 62: Request und Response der Ausgabe-SOAP
Was wir aber bereits sehen können, ist die Darstellung der WSDL, wie diese in einem Browser angezeigt wird. Dazu geben wir im Browser des Eclipse die folgende URL ein:
In Abbildung 63 sehen wir unterhalb des Verzeichnis-Knotens WEB-INF
ein von Eclipse erstelltes Unterverzeichnis wsdl
mit einer WSDL- und einer XSD-Datei. Bei der Ausgabe in Abbildung 63 wird nun genau diese WSDL verwendet, nicht die Datei im von uns angelegten Unterverzeichnis xml
. Bei einer Weitergabe einer WSDL an „Kunden“ dieses Dienstes, die danach ihre eigene Client-Anwendung beispielsweise als JSP-Client schreiben wollen, muss genau diese vom System erstellte WSDL-Datei weitergegeben werden.
Abbildung 63: WSDL im Browser-Fenster des Eclipse
Abbildung 64: Web Service Explorer aus WSDL-Umgebung aufrufen
Wenn Sie die Anwendung später erneut testen wollen, so erreichen Sie dies ebenfalls durch die neu erstellte WSDL-Datei. Mit Rechtsklick auf diese WSDL wählen Sie Web
Services -> Test with Web Service Explorer
(Abbildung 64), danach können Sie die gleichen Anwendungen ausprobieren wie bereits oben beschrieben.
Abbildung 65: Umgebung auswählen
Abbildung 66: Test des getEntries-Aufrufs
Nachfolgend werden alle Quell-Dateien wiedergegeben, die vom System angelegt wurden.
Klasse GuestBookEntryType.java
in src\org\example\guestbook\schema
:
Klasse GuestBookType.java
innerhalb src\org\example\guestbook\schema
:
Klasse ObjectFactory.java
innnerhalb src\org\example\guestbook\schema
:
Klasse package-info.java
innerhalb src\org\example\guestbook\schema
:
Die Klasse GuestBook_GuestBookSOAP_Server
steht im Unterverzeichnis src\org\example\guestbook\service
:
Klasse GuestBook_Service.java
in src\org\example\guestbook\service
:
Klasse GuestBook.java
innnerhalb src\org\example\guestbook\service
:
Klasse GuestBookImpl.java
innerhalb src\org\example\guestbook\service
:
Klasse ObjectFactory.java
innerhalb src\org\example\guestbook\service
: