Startseite :: Kontakt :: Sitemap ::

 

:: Versuch 2 - Implementierung von Web Services (Praktikum) - FSS '07

Quicklinks: Ziel :: Inhalt :: Material :: Abgabe ::
 

Ziel

Im zweiten Versuch soll XQuery als Implementierungssprache für Web Services verwendet werden. Dazu erweitern wir den Server aus Versuch 1 um einen XQuery-Auswerter. Für jede Operation wird auf dem Server ein XQuery-Ausdruck hinterlegt, deren Auswertung auf der Eingangsnachricht und evtl. weiteren Daten die jeweilige Antwortnachricht ergibt.

 

Inhalt

Teilversuch I

Erweitern Sie Ihren Server aus Versuch 1 so, dass auf jeder eingehenden SOAP-Nachricht eine XQuery-Anfrage ausgeführt wird, und geben Sie das Ergebnis der Anfrage als Antwortnachricht zurück. Verwenden Sie Saxon als XQuery-Auswerter. Die Anfrage, die für eine Operation ausgeführt wird, soll jeweils im Dateisystem abgelegt sein. Als Dateinamen verwenden Sie dabei den Local Part des Tagnamens, der die Operation bezeichnet, mit der Endung .xq. Die Anfrage soll als Eingabekontext den Wurzelknoten der SOAP-Nachricht erhalten.

Dadurch kann der Server nun sehr einfach, und sogar ohne Recompilation, um neue Operationen erweitert werden. Um z.B. die echo-Operation aus Versuch 1 zu implementieren, genügt, eine Datei echo.xq abzulegen, die als Inhalt den folgenden XQuery-Ausdruck trägt

 
  declare namespace wsprak="http://db.informatik.uni-mannheim.de/xmlprak"; 
  <env:Envelope xmlns:env='http://www.w3.org/2003/05/soap-envelope'> 
    <env:Header/>
    <env:Body>
      {/env:Envelope/env:Body/wsprak:echo}
    </env:Body>
  </env:Envelope>

    

Beachten Sie, korrekte Fehlermeldungen zu erzeugen, z.B. wenn eine nicht als Anfrage vorliegende Operation aufgerufen wird.

Implementieren als Test die Operation> histogram (Analog zu Versuch 1).

Teilversuch II

Der Server soll nun Web Services für ein Studienbüro anbieten. Dazu verfügt der Server über Stammdaten in Form des unten angegebenen Dokuments uni.xml. Die eingehenden SOAP-Nachrichten werden von Nutzern des Studienbüros (Studenten, Professoren, Verfassungsschutz, etc.) abgesetzt, um Informationen über die Studenten zu bekommen.

Implementieren Sie die folgenden Operationen mit XQuery-Ausdrücken, die die eingehende SOAP-Nachricht und die Stammdaten zu einer Antwort verknüpfen:

Teilversuch III

Geben Sie ausserdem eine WSDL-Spezifikation Ihres Web Service an, und sorgen Sie dafür, dass der Server die Spezifikation unter der URL "http://servername:port/wsdl" liefert. Verwenden sie den document-Stil und geben Sie Schemadefinitionen für die Nachrichten an.

 

Materialien und Hinweise

Saxon ist auf Sourceforge verfügbar. Die Dokumentation liegt dort in einem getrennten Paket, von dem Teile auch direkt beim Hersteller Saxonica abrufbar sind. Saxon kann die meisten Java-APIs für XML direkt als mögliche Eingabequellen verarbeiten (Streams, DOM, ...) und auch als Anfrageergebnis erzeugen.

Zur Vermeidung des Copy-Paste-Programmings für sich in den Anfragen wiederholende Teilausdrücke wie das Erzeugen des Result-Envelopes bietet sich die Verwendung XQuery library modules an (import module ...), die von Saxon auch unterstützt werden.

Das Dokument für die Stammdaten findet sich hier. Aus einer Query heraus kann man darauf z.B. mit der fn:doc-Funktion zugreifen, wenn das Dokument an geeigneter Stelle im Dateisystem abgelegt wird.

Hier noch ein Link zum WSDL-Standard beim W3C.

 

Abgabe

Die Abgabe der Aufgabe in Form des Java-Sourcecodes erfolgt per Email an mich. Der Abgabezeitpunkt ist Montag der 16.4. 2007 um 12.00 Uhr. Mit den einzelnen Gruppen gibt es dann jeweils individuell vereinbarte Besprechungstermine, in denen sie ihre Lösung gemeinsam präsentieren müssen.