:: Versuch 4 - Implementierung von Web Services (Praktikum) - FSS '07
Ziel
Im letzten Versuch soll ein umfangreicherer Web Service implementiert werden, der mit anderen Services zusammenarbeitet. Die Anwendungsdomäne ist dabei das Abbonnement und die Aggregation von RSS-Nachrichten. RSS (Really Simple Syndication) ist ein Datenformat zur Beschreibung von "Nachrichtentickern", d.h. Informationskanälen die die Verfügbarkeit von neuen Inhalten auf Webseiten anzeigen. Jede größere Webseite bietet RSS-Feeds zu verschiedenen Inhalten an.
Inhalt
Der neu zu implementierende Web Service soll die folgenden Anforderungen abdecken:
- Das System verwaltet ein Portfolio von RSS-Feeds, deren Inhalt es regelmäßig abruft und lokal speichert. Dieses Portfolio soll von den Nutzern über geeignete Operationen verwaltet werden können. Ein Feed ist definiert als ein eindeutiger Feedname mit dazugehörigem URL und Update-Intervall. Jeder Feed soll nur einmal pro Update-Intervall abgerufen werden.
- Nutzer können Profile registrieren. Ein Profil ist eine XQuery-Anfrage, die Zugriffe auf die zwischengespeicherten Feeds enthält, und als Ergebis einen neuen Feed ("Profilfeed") erzeugt, den der Nutzer unter einem vordefinierten URL abrufen kann. Die Zugriffe auf die Feeds erfolgen durch eine neue Funktion feed, die den Feednamen als Parameter bekommt und den Inhalt des Feeds zurückliefert.
- Eine einfachere Form von Profildefinitionen soll durch Angabe von einer Menge von Schlüsselworten erfolgen können. Jedes item, dass alle Schlüsselworte enthält, soll im Ergebnisfeed enthalten sein.
- Profilfeeds sollen auch mit SOAP abgerufen werden können
- Zu jedem Profil soll ein Rückruf in Form eines SOAP-Aufrufs registriert werden können. Wenn der Inhalt des Profilfeeds sich ändert, soll der entsprechende SOAP-Aufruf abgesetzt werden.
- Der Server sollte seine Daten persistent verwalten und nicht nach Neustart alle Feeds und Profile vergessen haben.
- Das Datenmanagement sollte weitgehend in XML erfolgen, also sollten z.B. die lokale Speicherung von Profildefinitionen ebenfalls XML-Dokumente sein.
- Registration und Pflege von Profilen erfolgt per SOAP.
- Der Server bietet die Möglichkeit, Statistiken über Feeds und Profile abzurufen. Dazu gehören aktuelle Anzahl items pro Feed/Profilfeed, durchschnittlichte Publikationshäufigkeit (d.h. wieviele items pro Zeiteinheit werden veröffentlicht).
- Der Server unterstützt auch den Abruf aller Profile und Feeds (also aller verwalteten Daten) auf einmal mittels SOAP, und umgekehrt kann das Ergebnis eines solchen Aufrufs auch wieder mit einem SOAP-Aufruf eingespielt werden (Backup und Restore).
Materialien und Hinweise
Wir beschäftigen uns nur mit RSS in der Version 2.0 (Spezifikation). Beispielfeeds :
- NY Times Hauptseite
- Focus Hauptseite
- Auf news.google.com kann man sich eigene Feeds basteln, einfach nach einem Thema suchen und dann links den RSS-Link verwenden, z.B. zum Thema Web Services
Die zu implementierende WSDL-Spezifikation enthält folgende Besonderheiten:
- Der Inhalt von GetProfileFeedResponse ist any, obwohl natürlich nur RSS als Inhalt erlaubt ist. Von RSS gibt es aber kein Standard-XML-Schema, deshalb steht hier any.
- Der Typ Notification im schema-Teil entspricht der Notifikationsnachricht, die an den im NotificationSpec angegebenen URL geschickt wird
Abgabe
Die Abgabe der Aufgabe in Form des Java-Sourcecodes erfolgt per Email an mich. Der Abgabezeitpunkt ist Montag der 4.6. 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.