Am 14. September 2017 haben wir eine überarbeitete Fassung unserer Datenschutzrichtlinie veröffentlicht. Wenn Sie video2brain.com weiterhin nutzen, erklären Sie sich mit diesem überarbeiteten Dokument einverstanden. Bitte lesen Sie es deshalb sorgfältig durch.

Java EE 7: Web Services

Erstellen eines Web Service Clients

LinkedIn Learning kostenlos und unverbindlich testen!

Jetzt testen Alle Abonnements anzeigen
Um einen Web Service mit Java konsumieren zu können, müssen Sie nicht viel Handarbeit leisten - das wsimport-Tool, das dem JDK beiliegt, erledigt den Großteil der Arbeit, so dass Sie sich um das reine Aufrufen der Web-Service-Methoden kümmern können.

Transkript

Einen Web Service, den Sie gebaut haben, wollen Sie natürlich auch verwenden. Genau darum werden wir uns in diesem Video kümmern. Wir werden besprechen, wie wir die Java-Klassen für das Verwenden des Web Services generieren können und wie wir sie in einer eigenen kleinen Applikation einbinden können. Damit ein Web Service konsumiert, also verwendet werden kann, benötigen wir ein wenig infrastrukturelle Arbeit. Es müssen letztlich sogenannte Proxy-Klassen erzeugt werden, die auf den Web Service zugreifen können. Der Hintergrund ist der, dass dieser Proxy bereits sämtliche Logik beinhaltet, die notwendig ist, um eine Verbindung mit dem Web-Server aufzubauen, auf dem der Web Service liegt, dann die notwendigen Daten zu serialisieren und ins SOAP-Format zu bringen, um die Anforderung an den Server zu übermitteln und dessen Rückgabe entgegenzunehmen und dann so aufzubereiten, dass unser Client, der mit dem Web Service arbeitet, damit tatsächlich etwas anfangen kann. Das Ganze kann man, wie gesagt, automatisieren, indem man einen Proxy erzeugt. Dieser Proxy wird anhand des vom Proxy bereitgestellten WSDL erzeugt. Das Ganze läuft nicht so ab, dass man jetzt von Hand anfängt, Java-Klassen zu bauen, sondern man benutzt ein Tool, das WSImport-Tool. Dieses WSImport-Tool, das bei der Standard-Java- Distribution schon dabei ist, kann verwendet werden, um entsprechend die Klassen zu erzeugen und dann sogar zu kompilieren. Sie können sich am Ende des Tages selber entscheiden, ob Sie mit den bereits kompilierten Klassen, also in binärer Form, den Web Service anbinden wollen, oder ob Sie dies auf der Source-Ebene, also der Quellcode-Ebene, machen wollen. Wenn Sie die Quellcode-Sachen benutzen wollen, können Sie die dann in Ihrem eigenen Projekt einbinden. Diese erzeugten Klassen werden sich in einem Package befinden, das letzlich dem Namensraum des Web Services entspricht. Das Ganze, weil es im Quellcode vorliegt, kann von Ihnen hinterher noch beliebig an eigene Bedürfnisse angepasst werden. Schauen wir uns nun an, wie wir einen Web Service einbinden und dann letztlich nutzen können. Wir sehen hier im Visual Studio den einzubindenden Web Service. Dieser verfügt über zwei Methoden. Eine Methode sayHello, die einen String als Parameter entgegennimmt und einen String zurückgibt und eine Methode mit dem durchaus längeren Namen doSomethingVeryLongLasting, die ein numerisches Argument entgegennimmt und keine Rückgabe besitzt. Diesen Web Service wollen wir anbinden. Damit wir das erledigen können, werden wir zunächst einmal ein neues Java-Projekt anlegen. Dieses Projekt werden wir WS Client nennen. Wir lassen sämtliche Standardeinstellungen so bestehen. Wir wechseln nun auf die Kommandozeile und werden dort den Web Service über das WSImport-Tool einbinden. Hier auf der Kommandozeile wechseln wir in das Java-Verzeichnis. In das Verzeichnis, in dem das JDK installiert ist. Dort in den Unterordner /bin. Wenn wir uns diesen Unterordner anschauen, werden wir feststellen, dass hier diverse Dienstprogramme drinliegen, unter anderem, das dritte von unten, das WSImport-Tool. Dieses Tool werden wir nun anbinden. Die Syntax dafür lautet: wsimport -d Jetzt geben wir das Verzeichnis an, in dem die generierten und kompilierten Java-Dateien liegen sollen. (tippt) Gefolgt von dem Parameter -s und dem danach folgenden Pfad zu dem Ordner, in dem die Quellcode-Dateien liegen sollen. (tippt) Der letzte Parameter ist der Name der WSDL-Datei. Oder, wenn wir die nicht lokal haben, die komplette Adresse zu dieser WSDL-Datei. Das ist: http://localhost:8080 ... /WS_ServerWeb/TestWebService?wsdl Enter wird nun das Herunterladen des WSDLs anstoßen und anschließend wird die Generierung der Dateien stattfinden. Das war es bereits. Damit ist der Vorgang abgeschlossen. Wenn wir jetzt auf das Temp-Verzeichnis schauen, werden wir feststellen, dass in den entsprechenden Packages sowohl Klassen als auch Quellcode-Dateien generiert worden sind. Wir können diese nun nutzen und in unsere eigenen Projekte einfügen. Zu diesem Zweck ziehe ich einfach das Wurzel-Package auf das SRC-Verzeichnis meiner Java- Applikation im Eclipse. Ich lasse Files & Folders, also Dateien und Ordner, kopieren und bin nunmehr einsatzbereit und kann den eigentlichen Client schreiben. Zu diesem Zweck lege ich eine neue Java-Klasse an und lasse hier die PublicStaticVoidMain- Methode mit generieren. Die Klasse wird in einem etwas anderen Package liegen. Das ist allerdings rein optional. Bei mir liegt sie im Package de.video2brain.clients. Sie nennt sich einfach nur WebServiceClient. Die so generierte Klasse können wir nun mit Leben befüllen. Um das zu erledigen, werfen wir erst noch einen kurzen Blick auf die generierten Quellcode-Dateien. Dann sehen wir, dass wir im Grunde für alle Methoden entsprechende Klassen generiert haben, genau so wie für die Rückgaben. Und wir sehen zwei weitere Klassen, nämlich TestWebService.java und TestWebServiceService.java. TestWebService.java ist genau genommen keine Klasse, sondern ein Interface. Über dieses Interface werden dann die entsprechenden Methoden abgebildet. Und TestWebServiceService – der Name ist nun automatisch generiert worden, ich kann den natürlich auch anpassen – ist der eigentliche Web Service-Client. Dieser Web Service-Client beinhaltet dann Methoden, mit deren Hilfe ich auf den Web Service zugreifen kann. Ich kann hier dann auch auf der Ebene des Konstruktors zum Beispiel eine andere Adresse angeben, so dass ich zum Beispiel nicht nur gegen ein Testsystem, sondern später auch gegen ein Produktivsystem arbeiten kann. auf dem sich natürlich die Adresse des Services unterscheidet von dem, was ich auf dem Testsystem habe. Das sprengt allerdings unseren Rahmen. Deswegen wechseln wir nun zurück in unseren Java-Code und werden hier zunächst den TestWebServiceService instanzieren. (tippt) Wir verwenden hier den Standard-Konstruktor, da wir keine andere Adresse angeben wollen. Wir haben nun eine Referenz auf den eigentlichen Web Service. Mit dem können wir so direkt noch nicht arbeiten. Nun benötigen wir noch die Referenz auf den sogenannten Port. Der Port repräsentiert die Stelle, an der die eigentlichen Funktionalitäten bereitgestellt werden. So ein Web Service kann mehrere Ports haben, also mehrere Möglichkeiten zum Zugriff bieten, die sich zum Beispiel in der Art und Weise, wie die Nachrichten aussehen, unterscheiden. Wir verwenden hier den automatisch generierten Port und den sprechen wir über die Service-Implementierung an. Die Rückgabe ist eine Implementierung des TestWebService-Interface. Abrufen tun wir das über GetTestWebServicePort. Auch hier gäbe es noch Überladungen. Auf Ebene dieses Ports können wir nun die eigentlichen Funktionalitäten aufrufen. Rufen wir zunächst einmal die Methode sayHello auf. Die hat eine Rückgabe vom Typ string. Die rufen wir ab, indem wir auf Ebene des Ports sayHello aufrufen und hier den entsprechenden Parameter mit angeben. Die so generierte Rückgabe kann ich dann ausgeben. (tippt) Wenn ich das Ganze nun einmal als Java-Applikation laufen lasse, sehe ich in der Konsole dann halt die generierte Ausgabe. Die zweite Methode, die wir auf Ebene dieses Services haben, ist eine One-Way-Methode. Das heißt, die hat zum einen keine Ausgabe und zum anderen wird sie auf dem Server langlaufend sein, das bekomme ich aber als Client gar nicht mit. Ich als Client rufe einfach nur die entsprechende Methode auf und sage hier: "Wie lange soll der auf dem Server in Sekunden benötigen?" Da sie wie gesagt als One-Way-Methode implementiert ist, wird sie nicht blockierend wirken. Das bedeutet, ich bekomme sofort die entsprechende Ausgabe beziehungsweise kann hier sofort die entsprechende Ausgabe generieren. Ich sehe sie dann in der Konsole ausgegeben. (tippt) Wir lassen das nochmal laufen und werden feststellen, dass das unmittelbar erfolgt. Auf dem Server erfolgt jetzt noch die Arbeit, die ist in einigen Sekunden auch abgeschlossen, aber wie gesagt, das sehen wir als Client nicht. Sie sehen, es ist sehr einfach, einen Web Service mit Hilfe von JAX WS anzubinden. Sie brauchen nur das WSImport-Tool und den Zugriff auf die WSDL-Datei. Sie können sich optional die Quellcodes generieren lassen. Das haben wir hier gemacht. Diese können Sie in Ihrer Applikation einbinden. Alternativ können Sie sich auch die kompilierten Klassen nehmen, diese in ein JAR-Archiv verpacken und dann entsprechend als binäre Ressource Ihrer Applikation hinzufügen. Welchen Weg Sie auch immer gehen: Die eigentlichen Einbindung des Web Services geschieht, indem Sie eine TestWebService-Instanz, in unserem Fall, erzeugen, dann den Port erzeugen und dann über den Port, also die Repräsentation des Zugriffs auf den Web Service, die entsprechenden Methoden aufrufen. Wir sind komplett entkoppelt von dem, was unter der Haube stattfindet. Wir arbeiten hier rein auf der Java-Ebene. Das ist eigentlich etwas sehr, sehr angenehmes.

Java EE 7: Web Services

Steigen Sie ein in die Java-Enterprise-Welt und lernen Sie, wie Nachrichten ausgetauscht und Dienste definiert werden.

5 Std. 13 min (30 Videos)
Derzeit sind keine Feedbacks vorhanden...
 

Dieser Online-Kurs ist als Download und als Streaming-Video verfügbar. Die gute Nachricht: Sie müssen sich nicht entscheiden - sobald Sie das Training erwerben, erhalten Sie Zugang zu beiden Optionen!

Der Download ermöglicht Ihnen die Offline-Nutzung des Trainings und bietet die Vorteile einer benutzerfreundlichen Abspielumgebung. Wenn Sie an verschiedenen Computern arbeiten, oder nicht den ganzen Kurs auf einmal herunterladen möchten, loggen Sie sich auf dieser Seite ein, um alle Videos des Trainings als Streaming-Video anzusehen.

Wir hoffen, dass Sie viel Freude und Erfolg mit diesem Video-Training haben werden. Falls Sie irgendwelche Fragen haben, zögern Sie nicht uns zu kontaktieren!