SOAP
Willemers Informatik-Ecke

Ein SOAP-Server unter Eclipse

  1. Erzeuge ein Dynamic Web Project. File | New | Dynamic Web Project
  2. Die Klasse, deren Methoden später vom Client aufgerufen werden soll, wird angelegt. Diese Klasse bildet die Server-Schnittstelle.
    package server;
    
    import javax.jws.WebMethod;
    import javax.jws.WebService;
    
    @WebService
    public class Hallo {
        @WebMethod
        public String sagHallo(String name) {
            return "Hallo, " + name;
        }
    }
    
    Wichtig: Die Klasse muss in einem package liegen.
  3. Daraus erstellt Eclipse die WSDL, den Server und ggf. sogar den Client. Dazu klicken Sie mit der rechten Maustaste auf Projekt und wählen New|Other. Es erscheint ein Dialog. Dort finden Sie unter Web Services den Punkt Web service. Mit Next kommen Sie weiter. Abbildung 1 zeigt den Folgedialog.


    Abbildung 1: Einstellen des Webservice

  4. Hier müssen Sie als Service Implementation Ihre Klasse Hallo eintragen. Sie finden die korrekte Bezeichnung am einfachsten über den Button Browse.


    Abbildung 2: Auswahl der Serverklasse.

    Es erscheint eine lange Liste von Kandidaten. Geben Sie den Namen der Klasse, also Hallo, in das Suchfeld ein. Wählen Sie Ihre Klasse und klicken Ok.

  5. Nun erscheint wieder der Dialog, dieses Mal ist die Implementation gefüllt. Die beiden Regler links ziehen Sie hoch auf Test service und Test client.
  6. Klicken Sie Finish und Eclipse bekommt Zuckungen. Keine Angst: Das geht vorbei.
  7. Eclipse hat zusätzlich ein Client-Projekt erzeugt. Dieser wurde zum Test gleich gestartet, wie in Abbildung 3 zu sehen.


    Abbildung 3: Testbildschirm

    In dem linken Fenster unter Methods sehen Sie die Methoden, die der Server anbietet. Die einzige Methode, die Sie selbst gebaut haben, ist sagHallo.

  1. Wenn Sie den Link von sagHallo unter Methods anklicken, erscheint auf der rechten Seite unter Inputs eine Eingabezeile mit zwei Buttons.
  2. Geben Sie einen Namen in die Eingabezeile und klicken Sie Invoke.
  3. Im dritten Fenster erscheint unter Result die erwartete Meldung "Hallo Anton".

Erzeugen eines Clients

Der Server steht, nun soll ein Java-Client erstellt werden, der auch ohne Application Server auskommen soll. In den meisten Fällen soll ein normales Programm den Kontakt zum SOAP-Server aufnehmen, seine Anfrage stellen, die Ergebnisse auswerten und dann weiterlaufen.

Um einen solchen vom Application Server unabhängigen Client zu erzeugen, erstellen Sie ein einfaches Java-Projekt. Eclipse unterstützt Sie darin, dass es innerhalb des Projekts den Rahmen für einen Web-Service-Client erzeugen kann. Auf diese Weise ersparen Sie sich den Umgang mit dem HTTP-Protokoll und der lästigen Umcodierung, sondern rufen den Server auf die gleiche Weise, wie Sie eine gewöhnliche Methode aufrufen würden.

  1. Neues Java-Projekt anlegen. File|New Java-Project. Suchen Sie sich einen Namen aus, beispielsweise SimpleSoapJavaClient.
  2. Nun erstellen Sie den Web-Service-Client. Dazu klicken Sie das Projekt mit der rechten Maustaste an und wählen New|Other.
  3. Dort finden Sie unter Web Services den Punkt Web Service Client. Wählen Sie in an und klicken Sie Next. Der Dialog sieht sehr ähnlich aus wie in Abbildung 1, enhält aber dieses Mal nur den Client-Typ.
  4. Unter Service definition muss der Server eingetragen werden, genauer seine WSDL-Datei. Dazu klicken Sie auf Browse.
  5. Es erscheint ein Dialog, der Ihnen die Web Service-Projekte der Arbeitsumgebung von Eclipse anzeigt. Sie klappen Ihren Server -- hier SimpleSoap -- auf und wählen unter WebContent|wsdl die Datei Hallo.wsdl an, das die Informationen für die Serverklasse Hallo enthält.
  6. Sie bestätigen die Wahl mit OK und auch den vorherigen Dialog mit OK und landen wieder im Dialog Web Service Client.
  7. Schließen Sie den Dialog mit Finish. Daraufhin erstellt Eclipse eine Schnittstelle zum Web Service. Sie finden die enstsprechenden Java-Klassen im Ordner src.
  8. Erstellen Sie eine normale Java-Klasse, indem Sie das Projekt mit der rechten Maustaste anklicken und New|Class anwählen.
    package de.willemer.webservice;
    
    public class JavaHalloClient {
    
        public static void main(String[] args) {
            try {
                HalloServiceLocator locator = new HalloServiceLocator();
                Hallo gruss = locator.getHallo();
                if (gruss == null) {
                    System.out.println("port ist null");
                }
                String name = "Anton";
                String response = gruss.sagHallo(name);
                System.out.println(response);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }
    
  9. Versichern Sie sich, dass der Server gestartet ist.
  10. Klicken Sie die Datei JavaHalloClient im Projekt SimpleSoapJavaClient mit der rechten Maustaste an.
  11. Wählen Sie Run As|Java Application.
  12. In der Konsole erscheit die Meldung "Hallo Anton".
In der Klasse HalloServiceLocator finden Sie übrigens die URL Ihres Web Services in der Variablen Hallo_address. Wenn Sie den Server über das Netzwerk ansprechen wollen, muss diese Adresse natürlich so angepasst werden, dass Sie nicht mehr localhost, sondern den Namen des Servers enthält.