Aufgaben |
-
Bitte implementieren Sie eine verteilte Datenstruktur. Dabei handelt es sich um
einen verteilten Vektor von Integer. Ein DistributedVector besteht aus mehreren
DistributedVectorSnippet. Benutzen Sie hierfür CORBA.
Der DistributedVector kann mit der Operation append einen weiteren Snippet zu
den bereits vorhandenen anhängen; die remove Operation entfernt einen Snippet.
Die Operationen average und size liefern den Durchschnittswert und die Anzahl
aller Elemente des gesamten Vektors (also über alle angehängten Snippets). Die
DistributedVectorSnippet speichern ein Stück des gesamten Vektors und stellen
die Operationen size und average, die die Größe und den Durchschnittswert des
jeweiligen Snippets liefern, zur Verfügung.
Die Werte in einem Snippet müssen sich nicht ändern lassen, und dürfen auf
keinen Fall kopiert werden.
Benutzen sie für Ihre Implementierung die folgenden Schnittstellen: distributed_vector_interfaces.tar
Schreiben Sie dann zuerst die IDL vector.jdl und kompilieren Sie sie mit dem
Befehl idlj -fall idl-file. Informationen dazu gibt es unter:
http://java.sun.com/javase/6/docs/technotes/tools/share/idlj.html
Sie müssen dann die Dateien
- public class DistributedVectorImpl extends DistributedVectorPOA
- public class SnippetImpl extends DistributedVectorSnippetPOA
- public class SnippetClient
schreiben.
Zum Ausführen benutzen Sie dann die Befehle:
> orbd -ORBInitialPort 1050 -ORBInitialHost localhost &
> java -jar corba-distr-vector-impl.jar localhost 1050 dvector &
> java -jar corba-snippet-impl-server.jar localhost 1050 snippet01 &
> java -jar corba-snippet-impl-server.jar localhost 1050 snippet02 &
...
> java -jar corba-snippet-client.jar localhost 1050 dvector add localhost
1050 snippet01 &
java -jar corba-snippet-client.jar localhost 1050 dvector add localhost
1050 snippet02 &
...
> java -jar corba-snippet-client.jar localhost 1050 dvector size
> java -jar corba-snippet-client.jar localhost 1050 dvector average
> java -jar corba-snippet-client.jar localhost 1050 dvector remove
localhost 1050 snippet02
...
Sie finden einen DistributedVectorImpl zum Testen unter
xian.mi.fu-berlin.de 1050 dvector
-
Bitte schreiben Sie ein Adressbuchdienst mit CORBA. Dabei soll eine Adresse aus
einem Namen, einer Strasse und einer ganzzahligen Hausnummer, einer ganzzahligen
PLZ und einem Städtenamen bestehen. Definieren Sie diese Datenstruktur als Typ
in einer IDL-Definition. Das Adressbuch soll das Abspeichern einer kompletten
Adresse mit einer Methode store erlauben. Adressen sollen durch eine Methode
search aufsuchbar sein, die eine Adresse als Ergebnis liefern soll. Sie soll
zwei Parameter haben: Einen Aufzählungstypen (Name, Strasse, Stadt) und eine
Zeichenkette, die auf Gleichheit mit dem entsprechenden Teil der Adresse
verglichen werden soll. Definieren Sie diese Schnittstelle und den
Aufzählungstypen entsprechend in IDL.
Bitte schreiben Sie ein Serverobjekt, dass sich entsprechend registriert sowie
eine kleines Testprogramm, das mehrere Adressen erzeugt und die Suche
demonstriert.
Für die Klausur wird
eine Frage entsprechend Aufgabe 3 und für die Nachklausur eine
Frage entsprechend Aufgabe 4 gestellt. Bereiten Sie die Aufgaben also
für die Klausur vor - sie werden nicht mit dem Aufgabenblatt
abgegeben oder bewertet.
-
Für die Klausur!
Der RFC für HTTP 1.1 führt das Konzept der Entity-Header (eTag) ein und
beschreibt wie diese in HTTP verwendet werden können. Bitte lesen Sie die
entsprechenden Abschnitte im RFC nach. Für die Klausur sollten Sie in der Lage
sein zu erläutern wozu eTags dienen und in welchen HTTP-Interaktionen sie
verwendet werden.
-
Für die Nachklausur! Lesen und erarbeiten Sie sich
die Spezifikation von Internationalized Resource Identifiers IRIs bei
http://www.ietf.org/rfc/rfc3987.txt. Sie sollten in der Lage sein, das Konzept
zu erläutern und IRIs mit URIs zu vergleichen.
|
| |
Zum Bestehen des Blattes ist es erforderlich, dass
- Aufgaben 1 + 2 bearbeitet wurden
- und dass Aufgabe 2 funktioniert
Die Abgabe der Lösungen erfolgt auf zwei Wegen
Bitte schreiben Sie zur jeder Aufgabe eine Dokumentation, in der Sie
anhand von *relevanten* Codefragmenten Ihre Implementierung
erläutern.
Die Codefragmente sollten möglichst kurz gehalten werden und nur
der Orientierung für den Leser dienen; entscheidend sind Ihre
Erläuterungen,
was diese Fragmente machen und wieso Sie sich für diese Art der
Implementierung entschieden haben. Erläutern Sie auch, welche Art
der Fehlerbehandlung Sie vorgenommen haben, insbesondere bezüglich
der Fehler, die erst bei verteilten Systemen auftreten. Die
Dokumentation ist in den Fächern der Tutoren abzugeben.
Schicken Sie ein Archiv an Ihren Tutor, welches den vollständigen
Quellcode sowie ausführbare JAR-Dateien für die jeweiligen
Aufgabenteile
enthält. Der Betreff der E-Mail sollte wie folgt anfangen:
"[ALP5] Gruppe X ....".
|