Einstieg in Webservices mit Apache Axis2 – Teil IV

SOA

Einstieg in Webservices mit Apache Axis2 – Teil IV

Generierung der Client-Klasse
Um eine Client-Klasse auf Basis von Axis2 erzeugen wird das Tool wsdl2java benötigt. Dieses befindet sich unter dem oben genannten Link zum Codegenerator.

Die Generierung der Client-Klasse erfolgt nun mittels:

wsdl2java -uri http://localhost:8080/Axis/services/WsTest?wsdl
-o c:\WsTestClient -s -p info.consus.webservice.client -u

Bei diesem Vorgang enstehen im Verzeichnis c:\WsTestClient insgesamt 4 Java-Klassen:
- de.buildblog.webservice.CreateRandomResponse
- de.buildblog.webservice.ExtensionMapper
- de.buildblog.webservice.client.WsTest
- de.buildblog.webservice.client.WsTestStub

Die ersten zwei werden nur Axis-intern verwendet und werden daher an dieser Stelle nicht weiter beleuchtet. Die Klasse WsTestStub ist die Implementierung der Client-Klasse. Bei der Klasse WsTest handelt es sich um ein Interface welches später bei allen Klassen zu implementieren ist, die den WebService verwenden sollen. Es wird bereits vom WsTestStub implementiert und kommt nur dann zur weiteren Verwendung, wenn weitere WebServiceClients entwickelt werden sollen.

Zunächst müssen die generierten Klassen gemäß ihrer Packagestruktur in das „WebserviceTest“ Projekt kopiert werden.

Der WsTestClientWrapper

Nun soll auf komfortable Weise auf den Webservice zugegriffen werden. Dies scheint auf den ersten Blick etwas Problematisch, da der generierte WebServiceClient mit seinen 267 Zeilen auf den ersten Blick recht unübersichtlich wirkt. Glücklicherweise interessieren uns an dieser Stelle nur Methoden, die als Rückgabewert mit dem Packagenamen beginnen der zuvor bei der Generierung verwendet wurde. Es bleibt also nur eine Methode übrig:

public de.buidlblog.webservice.CreateRandomResponse createRandom()

Der Rückgabewert dieser Methode ist ein Objekt vom Typ RandomResponse. Das ist ist etwas unkomfortabel und der Grund dafür, dass hier noch ein WebServiceClientWrapper entwickelt wird, denn uns letztlich Zugriff auf die Zufallszahl gewährt. Diese sieht wie folgt aus:

package de.buildblog.webservice.client;  

import de.buildblog.webservice.CreateRandomResponse; 
import de.buildblog.webservice.client.WsTestStub; 
import java.rmi.*;  

public class WsTestClientWrapper 
{ 
	private CreateRandomResponse randomResponse = null;  

	public WsTestClientWrapper(String sServiceURI) throws RemoteException 
	{ 
		try 
		{ 
			WsTestStub myService = new WsTestStub(sServiceURI); 
			this.randomResponse = myService.createRandom(); 
		} 
		catch(Exception e) 
		{ 
			throw new RemoteException("Keine Verbindung zum Webservice"); 
		} 
	}  

	public double createRandom() 
	{ 
		return this.randomResponse.get_return(); 
	} 
}


Um nun Zugriff auf unsere Zufallszahl zu erhalten ist lediglich eine Instanzierung der Klasse WsTestClientWrapper und das anschließende aufrufen der Methode createRandom() erforderlich.

Diskussion

4 Kommentare zu “Einstieg in Webservices mit Apache Axis2 – Teil IV”

  1. Das sieht ja furchtbar aus mit diesem
    Code Teil wie wärs die Schnipsel bei :
    pastebin.com/
    oder
    http://www.rafb.net/paste/

    reinzustellen und zu verlinken ?
    Zumindest mal übergangsweise….

    Posted by David | März 21, 2008, 11:45
  2. So besser?

    Posted by Hathead | März 21, 2008, 21:11
  3. Sieht bei mir leider verratzt aus mit Firefox. Die Zeilennummern stehen außerhalb des grauen Blocks. Ist das der Google-Highligher?

    Posted by Basti | April 4, 2008, 13:26
  4. Ich stell die Codes die Tage mal zum Download bereit.

    Posted by Hathead | April 10, 2008, 16:22

Post a comment