next up previous contents
Nächste Seite: Der erweiterte Client Aufwärts: Komplexe Datentypen Vorherige Seite: Erweitern der WSDL mit   Inhalt

Den Erweiterten Server erstellen

Wenn wir nun durch die Skripte wsdl2py und wsdl2dispatch die neuen Python Bindings und das Serverskelett erzeugen wollen, müssen wir beim Aufruf der Skripte die Option -e für extended Code generation und bei wsdl2py zusätzlich -b setzen, sonst werden die komplexen Datentypen nicht richtig abgebildet. Die Aufrufe lauten nun also: Wenn ihr hier eine Fehlermeldung erhaltet, empfielt es sich zu prüfen, ob den input und output Messages der Operationen wirklich Elemente und keine Typen zugewiesen wurde und ob der encoding Style auf document/literal gesetzt ist. Nun importieren wir die erstellten Dateien in Eclipse. Da das Hauptprogramm (MyMatheService.py) aus dem ersten Teil das durch wsdl2dispatch generierte Server Skelett verwendet, können wir es fast identisch übernehmen. Nur die Zeilen:
from MatheService_services_server import SquareService
der Importanweisung
from MatheService_services_server import MatheService und
AsServer(port=8080, services=[SquareService()], RequestHandlerClass=MySOAPRequestHandler)
des Requesthandlers
AsServer(port=8080, services=[MatheService()], RequestHandlerClass=MySOAPRequestHandler)
sind umzubenennen, da wir vorhin den Namen unseres Services geändert haben.
Wenn wir die Datei MatheService_services_types.py öffnen, erkennen wir hier die Klasse, die unseren komplexen Datentyp abbildet: language=Python, frame=shadowbox, tabsize=2, numbers=none
\begin{lstlisting}[frame=single, title={MatheService\_services\_types.py}]
...
In der Datei MatheService_services_server.py implementieren wir nun wieder unsere Verarbeitungsmethoden und sorgen dafür, dass sie beim Aufruf die geeigneten Parameter übergeben bekommen: language=Python, frame=shadowbox, tabsize=2, numbers=none

Wir können nun den Server starten und mit SoapUI testen: language=XML frame=shadowbox, tabsize=2
\begin{lstlisting}[frame=single, title={SOAPUI Request}]
<soapenv:Envelope
xmln...
...hl2>
</mat:ModuloRequest>
</soapenv:Body>
</soapenv:Envelope>
\end{lstlisting}
language=XML frame=shadowbox, tabsize=2
\begin{lstlisting}[frame=single, title={SOAPUI Response}]
<SOAP-ENV:Envelope
xm...
...>
</ns1:ModuloResponse>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
\end{lstlisting}
Glückwunsch, der Server funktioniert!
next up previous contents
Nächste Seite: Der erweiterte Client Aufwärts: Komplexe Datentypen Vorherige Seite: Erweitern der WSDL mit   Inhalt
Richard Mutschler 2007-03-20