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.
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….
So besser?
Sieht bei mir leider verratzt aus mit Firefox. Die Zeilennummern stehen außerhalb des grauen Blocks. Ist das der Google-Highligher?
Ich stell die Codes die Tage mal zum Download bereit.