home  |  suche  |  kontakt/johner  |  institut 
studierende  |  tech-docs  |  mindmailer 

WebService erstellen

Die Erstellung eines WebServices ist in Java 6 recht einfach. Einer Klasse müssen nur einige Annotations hinzugefügt werden:

Folgende Annotations sind wichtig:

 

AnnotationOrtBeschreibung
WebServiceKlassenrumpfZeigt an, das die Klasse ein WebService ist
SOAPBindingKlassenrumpfLegt die Art der SOAP Enkodierung fest
WebMethodMethodensignaturKennzeichnet eine Methode nach außen als WebService
WebResultMethodensignaturSetzt den Namen des Ergebnisses (optional)
WebParamParameterSetzt den Namen für Übergabeparameter (optional)

Eine Auflistung aller Möglichen Annotations findet sich unter: https://jax-ws.dev.java.net/jax-ws-ea3/docs/annotations.html

 

Rückgabewerte sind entweder primitiv oder Objekte. Bei Java Objekten muss beachtet werden, dass nur Attribute beachtet werden, welche über Getter/Setter verfügen. Ein parameterloser Konstruktur ist ebenfalls notwendig.

Das Folgende Code-Beispiel zeigt eine Klasse, welche als WebService gekennzeichnet wurde. Der Parameter name der Annotation WebService ist optional. Die Methode sayHello zeigt, dass im minimalsten Falle nur die Annotation WebMethod erforderlich ist, um eine Methode nach außen hin verfügbar zu machen.
Die Methode add zeigt, die vielfältigen Möglichkeiten um Rück/Übergabeparamter unter Verwendung der Annotations WebMethod,WebResult und WebParam nach außen hin sprechender zu gestallten:

 

package main;
import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebResult;
import javax.jws.WebService;
import javax.jws.soap.SOAPBinding;

@WebService(name = "WebServicesExample")
@SOAPBinding(style = SOAPBinding.Style.RPC)
public class MeineWebServiceKlasse{

//Minimale Notation
@WebMethod
public String sayHello(String name) {
return "Hello " + name + "!";
}

//Erweiterte Notation
@WebMethod(operationName = "summe")
@WebResult(name = "ergebnis")
public int add(@WebParam(name = "summand1") int a, @WebParam(name = "summand2") int b) {
return a + b;
}
}

 

Um den Webservice zu testen, ist es notwendig ihn auf einem WebServer zu veröffentlichen. Java 6 bietet zum testen einen eingebauten Webserver. Um diesen zu benutzen wird die obrige Klasse um eine Main-Methode ergänzt.

 

public static void main(String[] args) {
Endpoint endpoint = Endpoint.publish("http://localhost:8080/serviceName", new MeineWebServiceKlasse());
}

 

Um sich die generierte WSDL-Datei anzeigen zu lassen, kann mit einem Browser die folgende URL aufgerufen werden:

 

http://localhost:8080/serviceName?wsdl

 

Eine Beispiel WSDL-Datei findet sich hier

Hinweis

  • Der Endpoint aktzeptiert nur Verbindungen welche im HTTP-Request den selben Host anfordern, wie im Methodenaufruf Endpoint.publish() angegeben. Ein Aufruf von http://127.0.0.1:8080/serviceName würde demnach im obrigen Beispiel nicht funktionieren, da nur auf localhost "gehorcht" wird.