SOAP

Willemers Informatik-Ecke

Das einzig seriöse Javabuch :-) Mehr...


Errata

Bei Amazon bestellen


Ferien an der Flensburger Förde
Falls ich Ihnen helfen konnte:!
Vielen Dank!!!
2017-02-26
SOAP (ursprünglich Simple Object Access Protocol) ist ein Netzwerkprotokoll, das in der Regel das Web-Protokoll HTTP verwendet, um Daten im XML-Format auszutauschen. SOAP-Anwendungen funktionieren oft im Sinne eines Remote Procedure Calls (RPC). Das bedeutet, dass der Server Methoden im Netzwerk zur Verfügung stellt, die von anderen Computern des Netzwerk gerufen werden können.

Für Client und Server wird aus einer WSDL-Beschreibung (Web Services Description Language) ein Interface generiert, das beide implementieren.

Eine SOAP-Nachricht (Simple Object Access Protocol) ist eine XML-Struktur, in der die zu übermittelnden Daten abgelegt werden.

Realisierung eines SOAP-Projekts

  1. Erzeuge ein Dynamic Web Project SimpleSoap
  2. Erzeuge ein neues Package namens de.willemer.webservice
  3. Erzeuge eine einfache Java-Klasse Hallo
    package de.willemer.webservice;
    
    public class Hallo {
        public String meldeMich(String name)
        {
            return "Hallo "+ name;
        }
    }
    
    Diese Klasse bildet die Server-Schnittstelle.
  4. Rechtsklick auf Projekt New|Other.
  5. Es erscheint ein Dialog. Dort finden Sie unter Web Services den Punkt Web service. Mit Next kommen Sie weiter.
  6. Abbildung 1 zeigt den Folgedialog, in dem Sie als Service Implementation Ihre Klasse Hallo eintragen. Sie finden die korrekte Bezeichnung am einfachsten:
    1. Klicken Sie auf den Button Browse.
    2. Es erscheint eine lange Liste von Kandidaten.
    3. Geben Sie den Namen der Klasse, also Hallo, in das Suchfeld ein.
    4. Wählen Sie Ihre Klasse und klicken Ok.
  7. Die beiden Regler links ziehen Sie hoch auf Test service und Test client. Der Dialog sieht wie in Abbildung 1 aus.

    Abbildung 1: Einstellen des Webservice

  8. Klicken Sie Finish und Eclipse bekommt Zuckungen. Keine Angst: Das geht vorbei.

Abbildung 2: Ein neues Projekt SimpleSoapClient wurde erzeugt.

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

  1. Wenn Sie den Link von meldeMich 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 Tomcat 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 von Tomcat 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.meldeMich(name);
                System.out.println(response);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }
    
  9. Versichern Sie sich, dass der Server für SimpleSoap 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.


Homepage - Java (C) Copyright 2017 Arnold Willemer