Bindung des Netscape Application Servers an CORBA 

Home > Deutsch > Ressourcen > NAS und CORBA > kapitel_04
(C) Christian R. Ey
last modified:
Sun Jan 20 20:40:17 GMT+01:00 2002
-- Impressum / Contact --

Zurück Weiter


Der CORBA Server

Als Anwendungsfall wählten wir eine Bank, die auf einem CORBA-System vom Typ OrbixWeb2.0 implementiert wurde. Diese Bank hat zwei Klassen von Objekten: Die Klassen bank und account. Die Klasse bank verwaltet accounts mit den Methoden newAccount(.), findAccount(.) und deleteAccount(.). Ein account hat die Attribute name und balance und die Methoden makeLodgement(.) (macheEinzahlung) und makeWithdrawal(.) (macheAuszahlung). Listing 1 zeigt die CORBA-IDL.

//
// a simple description of a bank account
//
 interface account {
    readonly attribute string name;
    readonly attribute float balance;
 
    void makeLodgement (in float amount);
    void makeWithdrawal (in float amount);
 
 };
 
//
// a bank simply manufactures accounts
//
//  bank::reject is raised if a duplicate account name
//  is seen
//
 interface bank {
 
    exception reject {string reason;};
 
    account newAccount (in string name) raises (reject);
    account findAccount (in string name);
    void deleteAccount (in account anAccount);
 };
Listing 1: CORBA-IDL des Bank-Servers (© Iona Technologies, verändert von Cosima Schmauch)

 
Grafik 3: NAS in Verbindung mit einem CORBA Server (Quelle: Präsentation von Prof. Dr. Schmauch)

Wenn wir nun CORBA zu einer Applikation hinzufügen, fügen wir eine zweite Client/Server Architektur neben der des NAS ein. Wir setzen den CORBA-Server in eine Reihe zusammen mit Datenbanken und bereits existierenden Systemen, wie in Grafik 3 ersichtlich.

Eine NAS-Applikation, die sich an einen CORBA Server bindet, tut dies durch AppLogics. Diese rufen Methoden an den entfernten CORBA Objekten auf, empfangen Ergebnisse, und bereiten die Antwortseiten vor, die diese Ergebnisse anzeigen. Im Fall unseres Bank-Servers könnte ein AppLogic die Methode makeLodgement(.) an einem vorher erhaltenen account aufrufen, um Geld einzuzahlen - und anschließend eine Seite zurückgeben, die den aktuellen Kontostand angibt. Das Erhalten des account Objektes wird gewöhnlich im Voraus von einem anderen AppLogic erledigt. Deshalb müssen NAS-Applikationen, die ja aus einer Menge von HTML-Seiten und AppLogics bestehen, die Referenzen auf CORBA Objekte über verschiedene Adreßräume hinweg verwalten: Im Browser des Clients, in den verschiedenen AppLogics, die zu einer Applikation gehören und sogar über mehrere NAS hinweg muß der aktuelle Zustand der Applikation bekannt sein.

Dies lösten wir, indem wir die CORBA Objektreferenz als Zeichenkette zusammen mit einem eindeutigen Identifizierer (UID) im Session-Objekt speicherten, das vom Session- und State-Management des NAS zur Verfügung gestellt wird. Anschließend leiteten wir die UID an die HTML-Seite weiter. Diese Verfahrensweise erlaubt dem Programmierer, die Applikation voll zu kontrollieren; sogar das viel gefürchtete Drücken des "zurück"-Knopfes im Browser, welches den Status einer Applikation durcheinanderbringen kann, ist somit kontrollierbar.


Zurück Weiter, Autor: Christian Ey, http://www.inweb.de/chetan