wsdl2java - Klasse generieren und benutzen
Ich nutze: eclipse 3.4, jdk1.6.0_07, axis2-1.4.1 binaries,
lsrc.wsdl vom remotecontrol modul von limesurvey 1.80
- Axis 2 binary Distibution von ws.apache.org/axis2/download/1_4_1/download.cgi downloaden, entpacken in beliebigen Ordner.
- angelehnt an Keith Chapmans Blog die Klasse mit dem Befehl
wsdl2java.bat -uri lsrc.wsdl -o lsrc -p de.his.soap.lsrc -uw -or
generieren.
-uri : der Pfad zur wsdl relativ zum Pfad des Aufrufs.
-o : der Ordner in dem der source code erstellt werden soll relativ
zum Pfad des Aufrufs.
-p : Das package in dem diese Klasse liegt. Nützlich damit man die
Datein später nicht anpassen muß
-uw : unwrapped types. Nur mit diesem Parameter bekommen wir eine
leicht zu verwendende Stub Klasse.
-or : overwrite old Classes. Nützlich wenn wir öfters neu in den
gleichen Ordner generieren.
mehr
Parameter
- Nach dem erstellen müssen noch einige Fehler in der generierten *ServiceStub.java Datei beseitigt werden.
- Alle Fehler und Warnungen wegen Sichtbarkeiten können automatisch von Eclipse gefixt werden. (Klickarbeit)
- Einige Funktionen haben String als Rückgabetypen, meinen aber java.lang.String. Das generierte Package hat eine eigene String Klasse implementiert, also müssen diese Rückgabetypen in java.lang.String geändert werden.
- mit dem erzeugten stub aus der lsrc.wsdl ergeben sich noch weitere Anpassungen:
folgender Abschnitt kann auskommentiert werden, da sonst fehler das
Compilieren verhindern. Hier wurde etwas generiert was von meinem
Webservice nicht benötigt wird, aber einen Compilerfehler
verursacht.
Man sollte jedoch versuchen die java.lang.String param und
java.lang.String.MY_QNAME auf die Stub eigene String
Klasse um zu biegen: String param und
String.MY_QNAME
// private org.apache.axiom.om.OMElement toOM(java.lang.String param, boolean optimizeContent)
// throws org.apache.axis2.AxisFault {
//
//
// try{
//
[...]