So erstellt man mit Eclipse einen einfachen Web-Service

(http://www.zdnet.de/magazin/39161748/so-erstellt-man-mit-eclipse-einen-einfachen-web-service.htm)

von James Ho, 19. Februar 2008

Web-Services sind die Grundlage für die Zusammenarbeit von verschiedenen Rechnersystemen über ein Netzwerk. ZDNet zeigt in diesem Leitfaden, wie man einen einfachen Web-Service mit Java, Eclipse, Apache Tomcat und Axis2 schnell erstellt und installiert.

Am häufigsten begegnet man Web-Services in Form einer API. Diese werden von verschiedenen Websites bereitgestellt. Bei Google etwa gibt es Google Maps[1], die Facebook-API[2] wiederum gewährt den Zugriff auf Benutzerdaten, um Applikationen in Facebook zu entwickeln. Daneben werden häufig auch kundenspezifische und private Web-Services für Transaktionen über das Internet verwendet.

Vorbedingungen

Als Voraussetzung für die erfolgreiche Ausführung der einzelnen Schritte in diesem Leitfaden werden folgende Anwendungen benötigt:

  1. Java SDK[3], Version 6 oder höher (empfohlen)
  2. Eclipse[4] (empfohlen wird entweder Classic oder Java Developers Package)
  3. Axis2[5], vorzugsweise die Web-Archive-Distribution (WAR)
  4. Apache Tomcat[6]
  5. die Web-Tools Platform[7], ein Satz von Paketen, um Eclipse für Web-Services zu erweitern

Die genannten Anwendungen sind plattformunabhängig und unterstützen die meisten Betriebssysteme.

Eclipse einrichten

Nach dem Download der erforderlichen Software bedarf es noch ein wenig Zeit, um Eclipse[8] so zu konfigurieren, dass es als IDE für die Entwicklung von Web-Services funktioniert.

Zur Installation der Web-Tools-Platform müssen zuvor folgende Komponenten heruntergeladen werden:

Um die Komponenten zu installieren, müssen die Archive lediglich entpackt und die Dateien in die entsprechenden Ordner plugins und features kopiert oder durch ihre Gegenstücke aus dem Eclipse-Ordner ersetzt werden.

Nach dem Herunterladen werden die Eclipse-Einstellungen aufgerufen, um zu überprüfen, ob die Web-Tools-Plattform erfolgreich installiert ist. Dort müssen die zusätzlichen Optionen Server und Web-Services vorhanden sein.

Screenshot N24 RSS
Eclipse-Präferenzen
Großansicht: Klick auf Bild
Anschließend erweitert man den Verzeichnisbaum der Web-Services, um weitere Einstellungen vornehmen zu können, und zwar bei den Axis2-Preferences, den Scenario-Defaults und unter Server and Runtime. In den Axis2-Preferences wird der Speicherort der heruntergeladenen WAR-Datei eingetragen. Bei korrekter Installation erfolgt eine Bestätigung. Bei den Scenario-Defaults müssen lediglich die Szenarien von "Start service" und "Start client" eingestellt werden, die Typen bleiben unverändert.

Screenshot N24 RSS
Weitere Präferenzen
Großansicht: Klick auf Bild
Unter Server and Runtime wird der Server "Tomcat v6.0 Server" und für Web-Service-Runtime "Apache Axis2" ausgewählt.

Nun wird unter Server der Apache Tomcat als Server eingerichtet. Hierzu erweitert man den Baum Server, wählt Installed Runtimes aus und klickt auf "Add", um einen neuen Server hinzuzufügen. Dannach muss der Ordner Apache geöffnet und die Apache Tomcat-Version ausgewählt werden, die installiert ist. Bei der folgenden Aufforderung, den Standort des Apache Tomcat anzugeben, wird einfach das Root-Verzeichnis eingetragen.

Screenshot N24 RSS
Erste Schritte im Projekt-Wizard
Großansicht: Klick auf Bild
Nach der Konfiguration von Eclipse lässt sich im Ordner Web des New Project Wizard ein neues Dynamic Web Project anlegen. Das Projekt kann beliebig benannt werden - in diesem Leitfaden soll es "Webservice" heißen.

Im Schritt Project Facets des Assistenten ist das Kontrollkästchen neben Axis2 Web Services zu aktivieren. Dadurch werden die Axis2-Bibliotheken und -Konfigurationseinstellungen in das neue Web-Services-Projekt übernommen.

Screenshot N24 RSS
Weitere Schritte im Projekt-Wizard
Großansicht: Klick auf Bild
Nachdem Eclipse das Projekt erfolgreich angelegt hat, kann schließlich mit dem Schreiben von neuem Code begonnen werden.Zunächst wird durch einen rechten Mausklick auf den Ordner src und die Auswahl von "New/Class" im Kontextmenü eine neue Java-Klasse erzeugt. Sie erhält einen Namen in Großbuchstaben, beispielsweise "WS". Die übrigen Vorgaben bleiben unverändert. Der folgende Code meldet eine Reihe von Strings mit einem Hash-Text zurück, der als Funktion des neuen Web-Service Verwendung findet.

Nachdem der Code in die neue Klasse eingefügt wurde, kann durch einen rechten Mausklick auf die Java-Klassendatei und die Auswahl von "Web Services/Create Web service" ein Web-Service gestartet werden. Die Vorgaben sollten unverändert bei den zuvor gespeicherten Standardeinstellungen bleiben. Anschließend klickt man auf "Finish".

Screenshot N24 RSS
Einen Web-Service starten.
Großansicht: Klick auf Bild
Falls alle Eingaben korrekt sind, sollte Eclipse ein neues Projekt angelegt haben, mittels dessen der Web-Service-Client mit dem neu angelegten Web-Service interagiert, basierend auf dem obigen Code. Das Client-Projekt enthält Leerroutinen für die im Web-Service ausgeführten Methoden, damit der Client es korrekt aufrufen kann.

In diesem Stadium sollte der Web-Service auf dem Apache Tomcat ausgeführt und über die folgende URL aufgerufen werden können:


http://localhost:8080/PROJECT_NAME/services/JAVA_DATEINAME/
(hier also: http://localhost:8080/Webservice/services/WS/)

Dabei wird etwas XML-Code erzeugt, und es erfolgt die Meldung, dass ein Endpunkt fehlt. Das ist normal, da die URL direkt, ohne irgendwelche Daten aufgerufen wurde. Da jetzt der Web-Service läuft und ein Client-Projekt erstellt wurde, muss eine neue Java-Klasse im Client-Projekt erzeugt werden, die mit dem Web-Service interagiert. Dies geschieht, indem man eine neue Java-Klasse innerhalb des erzeugten Axis2-Pakets erstellt, beispielsweise unter der Bezeichnung org.apache.ws.axis2. Diese neue Java-Klasse wird eine Hauptfunktion einnehmen, weil sie nach ihrer Fertigstellung als normale Java-Anwendung läuft. Man fügt folgenden Code ein:

Wie bereits erwähnt hat Eclipse beim Anlegen des Web-Service-Client-Projekts Axis2-Leerroutinen für die im Web-Service ausgeführten Methoden erstellt. Diese befinden sich in der Datei WSStub.java und müssen die Methode return_hash() enthalten, die nun eine eigene Klasse namens Return_hash bildet.

Um zu verstehen, welche Methoden man am besten verwendet, ist es ratsam, sich die Klassen-Methoden in Eclipse durchsehen. Dazu gibt man die Klasse ein und wartet nach der Eingabe der Zeichenfolge (.) einen Moment, damit Eclipse die Optionen festlegen kann. Ähnliches lässt sich aber auch in der Java-Klassendatei bewerkstelligen.

Führt man das Ganze als Java-Anwendung aus, sollte es eine Rückmeldung vom Web-Service auslösen. Diese wird in der Eclipse-Konsole angezeigt und liefert somit den Beweis, dass sie den Web-Service erfolgreich durchlaufen hat. Auf diese Weise wird also relativ einfach ein erster Web-Service erstellt.

Hinweis: Auf Mac-Rechnern, speziell unter dem Betriebssystem Leopard, scheint es einen Fehler im Parsing der Java-Option http.nonProxyHosts durch den Axis2 zu geben, wenn ein * enthalten ist. Das wird durch folgende Einstellung in den VM-Argumenten vermieden:


-Dhttp.nonProxyHosts=localhost

Weitere Informationen und Spezifikationen zu Web-Services sind beim World-Wide-Web-Konsortium[9] (W3C) zu finden.

URLs in diesem Artikel:
[1] = http://code.google.com/apis/maps/
[2] = http://developers.facebook.com/documentation.php
[3] = http://java.sun.com/javase/downloads/index.jsp
[4] = http://www.eclipse.org/downloads/
[5] = http://ws.apache.org/axis2/
[6] = http://tomcat.apache.org/
[7] = http://download.eclipse.org/webtools/downloads/
[8] = http://zdnet.de/builder/program/0,39023551,39161746,00.htm
[9] = http://www.w3.org/2002/ws/