Accesskeys: Mit n zur Navigation, mit c zum Inhalt

Diese Webseite verwendet Cookies zum Spamschutz, zur dauerhaften Sprachauswahl, zum dauerhaften einloggen und für Statistiksoftware.

Mit Nutzung dieser Webseite erklären Sie sich damit einverstanden. Datenschutzerklärung

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
 

 

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{
//                             return param.getOMElement(java.lang.String.MY_QNAME,
//                                          org.apache.axiom.om.OMAbstractFactory.getOMFactory());
//                        } catch(org.apache.axis2.databinding.ADBException e){
//                            throw org.apache.axis2.AxisFault.makeFault(e);
//                        }
//                   
//
//            }


einige viele Fehler ;) in Zusammenhang mit java.lang.String.Factory.parse am Ende des generierten Stubs sollten noch vorhanden sein.

einfach jegliches Vorkommen von:

java.lang.String.Factory.parse

 

 

mit
 

org.apache.axis2.databinding.types.xsd.String.Factory.parse

ersetzen.


Jetzt sollten alle Fehler beseitigt sein und wir können den stub initialisieren.

 

Bsp.


ServiceStub stub = new ServiceStub(targetEndpoint); 
stubReturn = stub.sActivateSurvey(limeUser,limePass,surveyId);

 


Hinweis: Bei höheren Werten für die maximale heap size als Xmx768m kann axis die Virtuelle Maschine nicht starten. Der Grund ist mir nicht bekannt. Mit Xms256m und Xmx768m gab es keine Probleme.

Tim Wahrendorff
20.03.2009

< Miranda IM: Mehre IRC Server   Windows - fit für die alltäglichen Aufgaben >

Kommentar schreiben

Gravatar Unterstützung

* benötigt


Die E-Mail Adresse wird versteckt und nur genutzt um Dein Gravatar an zu zeigen, wenn Du eins hast.