Netzprogrammierung (WS 2007/2008)  19538
Übungsblatt   7
Ausgabe 22.01.08
Abgabe 29.01.08 - 14°°
Rückgabe 05.02.08
Klausur 12.02.2007

Aufgaben

  1. 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

  2. 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.

  3. 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.

  4. 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
  • Abgabe auf Papier:
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.  
  • Abgabe per E-Mail:
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 ....".
 

Diskussionsaufgaben, die nicht als Abgabe beantwortet werden sollen.Wir diskutieren sie in der Übung, Sie sollten sich im Rahmen dieser Aufgaben auf die Klausur vorbereiten.

Block CORBA
  1. Was ist die OMG?
  2. Was ist der ORB?
  3. Was ist IIOP?
  4. Was ist IDL?
  5. Nennen Sie drei Unterschiede zwischen Java RMI undCORBA.
  6. Womit muss man bei der Entwicklung von CORBA-Anwendungenbeginnen?
  7. Welche ganzzahligen Zahlentypen sind in IDL vorgesehen?
  8. Welche Fliesskommatypen gibt es in IDL?
  9. Was kann in einem Modul in IDL vorkommen?
  10. Was kann in einer Schnittstelle in IDL vorkommen?
  11. Welche Arten von Parameterübergabe kennt CORBA?
  12. Wie werden sie in der ORB Implementierung des JDK realisiert?
  13. Was macht der Portable Object Adapter?
  14. Welche Bedeutung haben die Kommandozeilenparameter -ORBInitialHost und -ORBInitialPortbei CORBA Anwendungen