Lab

2

Middleware Platforms

CORBA File System Browser


Systems Architecture Group

Ablieferungstermin und erreichbare Punktzahl für diese Aufgabe, sowie Voraussetzungen für die Prüfungszulassung entnehmen Sie bitte http://sar.informatik.hu-berlin.de.

Aufgabe 2 – CORBA File System Browser

Zur Einführung soll ein einfacher Dateisystem-Browser mit Hilfe von CORBA realisiert werden. Die Anwendung gliedert sich in eine Server-Komponente, der Informationen über ein Dateisystem bereitstellt, und eine Client-Komponente, der diese Informationen benutzt.

Teil A - Modellierung einer Dateisystem-Schnittstelle mit Hilfe von CORBA

In der betrachteten Anwendungsdomäne lassen sich die Entitäten File, FileDirectory und Directory identifizieren. Entwerfen Sie für diese Entitäten CORBA-Interfaces, die die folgenden Ausführungen berücksichtigen.

  • Ein File repräsentiert eine Datei des Dateisystems. Mit der Methode cat() lassen sich die Informationen über die Datei ausgeben, die das Unix-Kommando "file <name>" liefern würde.
  • Ein FileDirectory repräsentiert ein Ordner des Dateisystems. Unterstützt werden die Methoden ls() und get(string). Dabei liefert die Mehode ls() die Namen der enthaltenen Dateien (File) und Ordner (FileDirectory) als String-Sequenz. Man kann nun einen auf die beschriebene Weise erhaltenen Namen als Argument der Methode get(string) übergeben und erhält die Datei bzw. den Ordner in seiner CORBA Entsprechung. In der resultierenden Hierarchie sind Ordner (FileDirectory) innere Knoten des Baums und Dateien (File) die Blätter.
  • Ein Directory hat keine Entsprechung im zugrunde liegenden Dateisystem. Es lässt sich als eine Art Mount-Point auffassen, in das andere Objekte (Directory, FileDirectory, File) "eingehängt" werden können. Es wird analog zu Dateien und Ordnern über einen Namen identifiziert. Es unterstützt die Methode ls(), die die Namen der registrierten Objekte zurückliefert (als String-Sequenz analog zu FileDirectory). Die Methode get(string) liefert das registrierte CORBA Objekt (Directory, FileDirectory, File) zurück, dass mit dem Argument bezeichnet wird. Das Directory soll außerdem eine Methode register(...) zur Registrierung von Ordnern und Dateien (Directory, FileDirectory, File) bereitstellen.
  • Die Methode cat() ist nur für Dateien (File) definiert. Sie soll nicht im Interface eines Ordners (Directory, FileDirectory) vorkommen. Umgekehrt soll ls() nur für Ordner (Directory, FileDirectory) möglich sein, nicht für Dateien (File).

Teil B - Server

Implementieren sie die im Teil A entworfenen Interfaces und realisieren sie einen Server. Der Server erzeugt beim Start ein Directory Element als Startknoten. Lösen Sie das Problem, wie der Client eine Referenz auf diesen Startknoten erhält.

Der Server besitzt einen obligatorischen Kommandozeilen-Parameter, der den Startpunkt im Dateisystem angibt. Beim Start des Servers soll dafür ein FileDirectory Element angelegt und am Startknoten registriert werden. Der Server besitzt einen zweiten, optionalen Kommandozeilen-Parameter, mit dem sich der Startknoten eines anderen Servers referenzieren lässt. Der Server startet daraufhin wie bereits beschrieben, registriert aber zusätzlich seinen lokalen Startknoten am entfernten Startknoten unter dem Namen "<Hostname>:<abs. Pfad des lokalen Startordners im Dateisystem>".

 Teil C – Client

Der Klient ist eine Konsolenanwendung, die dem Nutzer eine einfache Kommandozeile bietet. Es soll als Prompt das aktuelle Arbeitsverzeichnis im CORBA Dateibaum angezeigt werden. Realisieren Sie folgende Kommandos:

  • Das Kommando ls listet den Inhalt des aktuellen Arbeitsverzeichnisses.

  • Das Kommando cd dir wechselt in das angegebene Verzeichnis dir.

  • Das Kommando cat file liefert Informationen über die Datei file (wie unter A beschrieben).

Abgabe und Bewertung

Begründen Sie die von Ihnen getroffenen Entscheidungen und beschreiben Sie aufgetretene Besonderheiten und Probleme. Benutzen Sie dafür eine HTML Datei mit dem Namen index.html.

Abzugeben sind weiterhin die Quelltexte der Lösung und ein Makefile, das die Quellen mit den gängigen Werkzeugen automatisiert übersetzt (Verwenden Sie dabei keine absoluten Pfade, sondern die Umgebungsvariable MICO_HOME, die auf das Installtionsverzeichnis des MICO ORB gesetzt ist). Bitte reichen Sie die geforderten Dateien in ein ZIP Archiv gepackt ein.

Verwenden Sie für die Lösung der Aufgabe die CORBA Implementierung MICO unter Linux. Behandeln Sie auch Fehler- und Ausnahmesituationen entsprechend. Bedenken Sie, dass unter umständen auch mehrere Clients gleichzeitig auf den Server zugreifen können.

Benötigte Software

MICO lässt sich mit GCC/Linux oder unter Windows mit GCC/Cygwin oder dem MS Visual C++ Compiler übersetzen.
Installation unter Linux:

  1. Quellen herunterladen (http://www.mico.org/mico-2.3.12.tar.gz)

  2. Auspacken: tar -xzf mico-2.3.12.tar.gz, in das erzeugte Verzeichnis wechseln

  3. Konfigurieren: ./configure --prefix=$MICO_HOME --disable-coss --disable-shared --enable-minimum-corba --enable-thread --enable-pthreads

  4. Übersetzen: make

  5. Installieren: make install
    Ggf. Pfade anpassen (siehe dazu $MICO_HOME/lib/mico-setup.sh)

Nach erfolgreicher Installation sind in MICO_HOME/bin Wrapper-Scripe für die Aufrufe von Compiler, Linker & Co. zu finden. Diese Scripte haben den Prefix "mico-", beispielsweise mico-c++ für den C++-Compiler. Für die Übersetzung sollten möglichst diese Scripte verwendet werden, da sie die benötigten Pfade, Bibliotheken usw. an die zugrunde liegenden Werkzeuge weitergeben.

Ressourcen


Legal disclaimer. .  © 2024 Humboldt-Universität zu Berlin, Computer Science Department, Systems Architecture Group. Contact: sar@informatik.hu-berlin.de .