Web Service Tutorial - Erstellung eines Gästebuchs mit Web Services

Realisiert mit Eclipse 3.4 (Ganymede), Apache Tomcat 6.0 und Apache Axis2 1.4

Hinweis: Dieses Tutorial ist im Rahmen der Übung zur Vorlesung Entwicklung service-orientierter Architekturen und Anwendungen (SOA) 2008 entstanden.

In diesem Tutorial wird beschrieben, wie ein Gästebuch Webservice unter Verwendung von Eclipse 3.4 (Ganymede), Apache Tomcat 6.0 und Apache Axis2 1.4.1 erstellt wird. Um die Funktionsweise des Gästebuch-Web-Services zu testen, wird eine Java-Applikation entickelt, die den Webservice benutzt. Die folgende Abbildung illustriert die Architektur des in diesem Tutorial zu erstellenden Setups.

Aufbau des Gästebuchs, das in diesem Tutorial erstellt wird.

Voraussetzungen

Dieses Tutorial setzt voraus, dass Sie Tomcat korrekt mit Eclipse verbunden haben.

Darüber hinaus müssen Sie Axis2 mit Eclipse verbinden.

Vorgehen

  1. Neues dynamisches Web-Projekt: Erstellen Sie in Eclipse ein neues dynamisches Web-Projekt, indem sie im Kontextmenü der Projektansicht New -> Project... -> Web -> Dynamic Web Project wählen. Klicken Sie auf Next. Geben Sie einen Projektnamen ein, z. B. GuestBookService. Die Target Runtime sollte auf Apache Tomcat 6.0 stehen. Falls nicht, wählen Sie Apache Tomcat 6.0 aus der Liste aus oder erstellen Sie eine neue Runtime.
  2. Gästebuchklasse erstellen: Erstellen Sie eine neue Klasse GuestBook im Package de.unihannover.se.soa08.tutorial.guestbook.model mit folgendem Inhalt:
    GuestBook.java
    
    package de.unihannover.se.soa08.tutorial.guestbook.model;
    
    import java.util.List;
    import java.util.Vector;
    
    public class GuestBook {
    	private List<GuestBookEntry> entries = new Vector<GuestBookEntry>();
    	
    	public GuestBookEntry[] getGuestBookEntries() {
    		return entries.toArray(new GuestBookEntry[1]);
    	}
    	
    	public void insertGuestBookEntry(String name, String mail, String message) {
    		System.out.println("Adding entry...");
    		entries.add(new GuestBookEntry(name, mail, message));
    	}
    }
    
  3. Weitere Klassen: Die Gästebuchklasse von oben benötigt noch die Klasse GuestBookEntry.java.
  4. Gästebuch Webservice und Client-Stub erstellen: Im Kontextmenü der Klasse GuestBook.java New -> Other... -> Web Services -> Web Service wählen und auf Next > klicken. Der Web Service Wizard erscheint. Wählen Sie "Bottom up Java bean Web Service" als Typ und die Gästebuchklasse als Service Implementierung. Der obere Schiebregler sollte auf "Start service", der untere Schieberegler auf "Start client" stehen. Der Client-Typ ist "Java Proxy". Wählen sie als "Web service runtime" Apache Axis2. Klicken Sie auf Finish und warten Sie, bis Axis2 alle Einstellungen und Generierungen vorgenommen hat. Wenn alles geklappt hat sollte nun ein neues Projekt mit dem Namen GuestBookServiceClient im Projektordner von Eclipse erscheinen.
  5. Scope des Services vergrößern: Zunächst müssen wir aber noch den Scope des Web Services vergrößern, damit einträge auch länger als einen Request zur Verfügung stehen. Öffnen Sie dazu die Datei WebContent/WEB-INF/services/GuestBook/META-INF/service.xml im Projekt GuestBookService. Erweitern Sie den Scope wie folgt auf Application:
    <service name="GuestBook" scope="application">
    ACHTUNG! Die Änderung des Scopes auf Application führt dazu, dass der Gästebuch-Service nicht mehr zustandslos (stateless) ist.
  6. Service testen: Tomcat sollte automatisch gestartet sein. Prüfen Sie, ob der neue Service verfügbar ist, indem sie die WSDL unter folgendem Link aufrufen: http://localhost:8080/GuestBookService/services/GuestBook?wsdl (Der Link funktioniert nur, wenn Ihr Projekt GuestBookService heißt.)
  7. Web Service Client: Das Projekt GuestBookService sollte die zwei Klassen GuestBookCallbackHandler und GuestBookStub enthalten. Wir benutzen die Klasse GuestBookStub, um auf den Gästebuchservice zuzugreifen. Erstellen Sie dazu eine Klasse mit Main-Methode. Die Klasse GuestBookClient.java zeigt wie. Der folgende Ausschnitt aus GuestBookClient.java zeigt, wie man die insertGuestBookEntry-Methode des Webservice aufruft:
    try {
    	GuestBookStub stub = new GuestBookStub();
    	GuestBookStub.InsertGuestBookEntry newEntry = new GuestBookStub.InsertGuestBookEntry();
    	
    	newEntry.setName(name);
    	newEntry.setMail(mail);
    	newEntry.setMessage(message);
    	
    	stub.insertGuestBookEntry(newEntry);
    } catch (AxisFault e) {
    	e.printStackTrace();
    }
    catch (RemoteException e) {
    	e.printStackTrace();
    }
    
    Der nächste Ausschnitt aus GuestBookClient.java zeigt, wie man die Einträge aus dem Service ausliest.
    try {
    	GuestBookStub stub = new GuestBookStub();
    	GuestBookStub.GetGuestBookEntriesResponse entriesResponse = stub.getGuestBookEntries();
    	GuestBookEntry[] entries = entriesResponse.get_return();
    	return entries;
    } catch (AxisFault e) {
    	e.printStackTrace();
    }
    catch (RemoteException e) {
    	e.printStackTrace();
    }
    

Eclipse-Projekte

Das Gästebuch Web Service Beispiel und der Java-Client Gästebuch-Client kann direkt in Eclipse als Projekt importiert werden. Klicken Sie dazu jeweils auf Import -> General -> Existing Projects into Workspace -> Select Archive File....

Der Servlet- und JSP-Gästebuch-Client zeigt, wie man den Gästebuch-Webservice im Web-Container benutzen kann. (Import -> WAR file)

Siehe auch:


Letzte Änderung: 06.06.2011 von Kai Stapel