next up previous contents
Nächste Seite: Die Service Implementation einfügen Aufwärts: Der Python ZSI Server Vorherige Seite: Methodenstubs aus der WSDL   Inhalt

Implementation des MatheService Web- Servers

Wir erstellen nun eine Python Datei Namens MyMatheService.py. Ich verwende zur Python Programmierung Eclipse mit dem PyDev Plugin, es steht aber jedem frei das Werkzeug seiner Wahl zu verwenden. MyMatheService.py wird das Hauptprogramm. Es stellt einen Request Handler zur Verfügung, verbindet unseren Service mit dem ServiceContainer und startet den HTTP Server. language=Python frame=shadowbox, tabsize=2 2
\begin{lstlisting}[frame=single, title={MyMatheService.py}]
from ZSI.ServiceCont...
...=[SquareService()], RequestHandlerClass=My-
SOAPRequestHandler)
\end{lstlisting}

Es wäre nicht nötig gewesen, den eigenen Request Handler MySOAPRequestHandler zu implementieren, aber beide, Python ZSI Clients, welche die ServiceProxy Klasse und MS VisualBasic SOAP Clients, erwarten auf ein HTTP GET, die WSDL Datei übermittelt zu bekommen. Dies ist inzwischen ein weit verbreitetes Verhalten. Hierdurch musste die AsServer(..) Funktion erweitert werden, um den eigenen Request Handler zu verwenden.
Wir können den Service nun schon testen. Zum Testen von Web- Services verwende ich das Tool SOAPUI. SOAPUI generiert SOAP Messages aus einer WSDL und schickt diese an den in der WSDL angegebenen Server. language=XML frame=shadowbox, tabsize=2
\begin{lstlisting}[frame=single, title={SOAPUI Request}]
<soapenv:Envelope xmlns...
...<x>6</x>
</mat:getSquare>
</soapenv:Body>
</soapenv:Envelope>
\end{lstlisting}
language=XML frame=shadowbox, tabsize=2
\begin{lstlisting}[frame=single, title={SOAPUI Response}]
<SOAP-ENV:Envelope xml...
...</ns1:getSquareResponse>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
\end{lstlisting}
Da wir im Server ja noch keine Funktion geschrieben haben, die diese Anfrage bearbeitet, erhalten wir als Ergebnis : return xsi:nil=1. Das war soweit ja auch zu erwarten. Wir sehen vor allem aber, dass der Server läuft und unsere Anfrage entgegennimmt. Um nun sinnvolle Ergebnisse zu erhalten implementieren wir die Funktion getSquare.


next up previous contents
Nächste Seite: Die Service Implementation einfügen Aufwärts: Der Python ZSI Server Vorherige Seite: Methodenstubs aus der WSDL   Inhalt
Richard Mutschler 2007-03-20