next up previous contents
Next: Zugriffssicherung Up: Orbix Wonderwall Previous: Orbix Wonderwall

Proxifizierung

Zum besseren Verständnis zunächst also der Ablauf der Proxifizierung an einem einfachen Beispiel (Abb.8):


 
Abbildung 8: Proxifizierung durch Orbix Wonderwall
\begin{figure}
\begin{center}
\epsfbox{vortrag8.eps}\end{center}\end{figure}

Initialisierung des Servers und Erzeugung der IOR: Der Server wird gestartet und erzeugt mittels object_to_string() eine IOR.

Maskierung der Server-IOR: Bevor nun die IOR an den Client übergeben wird, wandelt ein Hilfsprogramm einen Teil der IOR (in der Regel das Adreßfeld Rechnername/Port) um, indem es an die Stelle des Rechners, auf dem das Objekt abläuft, die Adresse des Proxy-Servers hinterlegt. Zusätzlich muß der Proxy wissen, wo sich das Objekt befindet.

Übermittlung zum Client und Umwandlung der IOR in ein Objekt: Die IOR wird daraufhin, wie normalerweise üblich, dem Client über eine Netzwerkverbindung übermittelt - etwa via HTTP als Parameter eines Applets oder via NFS als Datei, und dieser wandelt sie durch string_to_object() wieder in eine Referenz auf ein CORBA-Objekt um.

Entfernter Methodenaufruf: Will nun der Client in dem entfernten Objekt eine Methode aufrufen, so tut er dies, indem er eine TCP-Verbindung zu dem Proxy-Server öffnet, im Glauben, das Objekt befinde sich dort.

Aufnahme und Weiterleitung des Aufrufs durch den Proxy: Stattdessen ``lauscht'' aber ein Programm auf diesem Port, das den Request-Header (s. 1.3.2) der IIOP-Nachricht ausliest, das originale Objekt über eine Datenbank ausfindig macht und die Nachricht an den richtigen Adressaten weiterleitet.

Interessant ist sicherlich der Fall, in dem das entfernte Objekt eine sog. Factory ist, was soviel heißt, daß es eine Referenz auf ein weiteres CORBA-Objekt zurückliefert. Dies ist etwa bei einem Objekt der Fall, das die im folgenden Beispiel skizzierte Schnittstelle Kernel::Context des Insekten-Simulators implementiert:

// IDL
interface Insect {
 ...
};

interface Context {
  ...
  Insect createInsect(...);
};
In diesem Fall stellt sich bei der Proxifizierung folgendes Problem: Der Client fordert vom Server durch Aufruf von createInsect() ein neues Insekt an; dieser weiß jedoch nicht, daß er hinter einer Firewall abläuft und gibt die Referenz auf das Insekt in Form einer IOR zurück, die höchstwahrscheinlich auf einen Rechner verweist, auf den der Client keinen Zugriff hat.
Hier muß also erneut der Proxy eingreifen und die zur Weiterleitung eingehende Referenz auf Insect ``on the fly'' so verändern, daß sie sich ebenfalls scheinbar auf dem Proxyserver befindet. Danach übernimmt der Proxy für das Insekten-Objekt genauso die Vermittlung, wie vorher schon für das Context-Objekt.


next up previous contents
Next: Zugriffssicherung Up: Orbix Wonderwall Previous: Orbix Wonderwall
Tim Paehler
1998-05-12