12. WSDL-Datei erzeugen und auswerten
WSDL
WSDL (Web Services Description Language) ist einXML-Derivat zur Beschreibung der Schnittstellen von WebServices. Nachrichtenstrom-Formate und Funktionsaufrufewerden definiert (siehe auch WSDLund Beispiel). Beispiele für WSDL-Dateien:
WSDL2Java: WSDL-Datei auswerten
Sie können eine WSDL-Datei interaktiv mit generischen
SOAP-Clients nutzen, die Ihre Informationen aus der
WSDL-Datei beziehen, automatisch eine passende Eingabemaske
erzeugen und das Ergebnis des Web Services anzeigen.
Entsprechende Tools gibt es zum Beispiel unter: http://www.soapclient.com/SoapTest.html
und http://www.soapclient.com/SoapMsg.html.
Normalerweise wird ein SOAP-Web-Service jedoch aus
Programmen angesprochen. Aus einer bestehenden WSDL-Datei können
mit "org.apache.axis.wsdl.WSDL2Java"
Java-Sourcedateien erstellt werden, die als Proxy verwendet
werden können, worüber der Web Service leicht per Java
genutzt werden kann.
Hilfe zu den WSDL2Java-Kommandozeilenparametern gibt es bei
installiertem WSTK mit:
call C:\Java\wstk\bin\wstkenv.bat
java -cp "%WSTK_CP%"
org.apache.axis.wsdl.WSDL2Java -h
|
Proxy-Java-Sourcedateien können folgendermaßen aus
einer WSDL-Datei erzeugt werden:
SETLOCAL
call C:\Java\wstk\bin\wstkenv.bat
@echo on
java -cp "%WSTK_CP%" org.apache.axis.wsdl.WSDL2Java
https://www.MeineDomain.net/MeinPfad/MeineWsdlDatei.wsdl
|
Dabei bitte die letzen Zeilen (ab "java ...")
als eine Kommandozeile eingeben.
Es entsteht eine Java-Klasse, deren Name mit "...Stub"
endet. Sie enthält die gewünschten SOAP-Funktion als
Java-Methode, die von Ihrem Programm aufgerufen werden kann.
Beispiel: Mit der Kommandozeile
java -cp "%WSTK_CP%"
org.apache.axis.wsdl.WSDL2Java
https://www.webservicex.net/CurrencyConvertor.asmx?wsdl
|
erhalten Sie die Java-Klasse "class
CurrencyConvertorSoapStub", welche die
Java-Methode "double conversionRate( fromCurrency,
toCurrency )" enthält, worüber eine Währungsumrechnung
leicht von Java aus durchgeführt werden kann.
Java2WSDL: WSDL-Datei erzeugen
WSDL-Dateien können mit
"org.apache.axis.wsdl.Java2WSDL" aus
Java-Sourcedateien erstellt werden.
Hilfe zu den Kommandozeilenparametern gibt es bei
installiertem WSTK mit:
call C:\Java\wstk\bin\wstkenv.bat
java -cp "%WSTK_CP%"
org.apache.axis.wsdl.Java2WSDL -h
|
Eine erste einfache WSDL-Datei zum HelloWorldService
könnte zum Beispiel folgendermaßen erzeugt werden:
SETLOCAL
call C:\Java\wstk\bin\wstkenv.bat
@echo on
java -cp "%WSTK_CP%;C:\Java\soap"
org.apache.axis.wsdl.Java2WSDL
-o"HelloWorld.wsdl"
-m"getMessage"
-l"https://localhost/soap/servlet/rpcrouter"
soaptest.service.HelloWorldService
|
Dabei bitte die letzen Zeilen (ab "java ...")
als eine Kommandozeile eingeben.
Bitte beachten Sie, dass eine öffentlich zugängliche
WSDL-Datei natürlich keinen Sinn macht, wenn die darin
eingetragene "service location url" nur lokal
nutzbare Bestandteile wie "localhost"
oder nur im Intranet verwendbare IP-Adressen ("192.168....")
enthält, wie in obigem Beispielkommando in der vorletzten
Zeile gezeigt.
Sie können Ihre WSDL-Datei mit den schon genannten
generischen SOAP-Clients testen, die Ihre Informationen aus
der WSDL-Datei beziehen (zum Beispiel http://www.soapclient.com/SoapTest.html
und http://www.soapclient.com/SoapMsg.html).
Damit tatsächlich jemand über die WSDL-Datei
Informationen zu Ihrer Web-Service-Schnittstelle in
Erfahrung bringen kann, muss diese Datei an einem öffentlich
zugänglichen Ort platziert werden (auf Ihrem Webserver).
Ein beschreibender Text zu Ihrem Web Service und die URL der
WSDL-Datei sollten Sie in einer UDDI-Registry eintragen
(siehe UDDI- Registry).
|