Bindung des Netscape Application Servers an CORBA 

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

Zurück Weiter


Verwendung der Bank Extension

Die AppLogics, die die Bank Extension benutzen, ähneln den AppLogics, die den CORBA Server direkt ansprechen. Die Geschäftslogik ändert sich nicht. Das erste AppLogic, bankBindAppLogic, ruft die Methode bindToBank() auf an der Managerklasse der Extension, IBankManager. Die Managerklasse gibt ein IBank Objekt zurück, wenn das Binden an den CORBA Server erfolgreich war. Wenn sie keinen Erfolg hatte, speichert die Managerklasse die Ausnahme in einem IException Objekt in sich selbst. Das AppLogic kann nun nachprüfen, ob ein IException Objekt vorhanden ist oder nicht und ggf. eine Fehlerbehandlung einzuleiten. Unser Verfahren zum Abfangen von Ausnahmen an Extensions hat im AppLogic eine ähnliche Struktur wie try-catch Blöcke in Java. In Listing 9 wird dieses Verfahren am Beispiel des bankBindAppLogic erklärt. Im AppLogic, das Extensions benutzt, sind alle CORBA spezifischen Elemente verschwunden, und alles wurde durch Aufrufe an Extension Objekten ersetzt.

Listing

Erklärung

package bankCorbaAppDelegate1;  
import [...]
import bankCorbaExtDelegate.*;  
 
public class bankBindAppLogic
    extends CorbaAppLogic {  
    public int execute() {  
        String sUid;   
        IBank myBank = null;   
        IBankManager theBankManager;  
        boolean useSession = true;   
        IException E;  
        boolean exceptionThrown;   
        // call getSessionObject() to create a   
        // CorbaExtensionSession   
        // for the current application  
        this.getSessionObject();   
        [...]

das AppLogic importiert bankCorbaExtDelegate, erweitert CorbaAppLogic.

Es werden je ein IBank, IBankManager und ein IException Objekt deklariert.

useSession legt fest, daß in der Extension das Session Objekt zum Speichern verwendet wird.

        // bind to the manager object  
        theBankManager = access_cBank.getcBank(   
                context, null, this);  
        if (theBankManager == null)  
           return result( [...]("No extension access")) ;

das AppLogic greift auf die Extension zu und bekommt deren Managerklasse.

        // business logic: bind to the bank  
        exceptionThrown = false;  
        tryblock: {   
            myBank = theBankManager.bindToBank(  
                 bankserver, hostname);  
            E = theBankManager.getException();   
            if (E != null) {  
                exceptionThrown = true;  
                theBankManager.setException(null);  
                break tryblock;  
            }  
        }

hier die Geschäftslogik und der simulierte "try-Block". Wenn bei bindToBank(.) eine Ausnahme aufgetreten ist, ist das IException Objekt E nicht NULL und die bool’sche Variable exceptionThrown wird auf TRUE gesetzt. Anschließend wird das IException Objekt an der Managerklasse gleich wieder auf NULL gesetzt. break tryblock wird sinnvoll, wenn mehrere Programmierschritte im tryblock: vorhanden sind.

        if (exceptionThrown) {   
            if (E.getExceptionName().equals(   
                                 "CorbaConnectionException"))   
                return result([...]("Fehlermeldung") );   
        }

hier das simulierte "catch". Wenn exceptionThrown TRUE ist, wird eine Fehlerbehandlung eingeleitet.

        [...]
        exceptionThrown = false;  
        tryBlock: {   
            sUid = theBankManager.addObject(
                            myBank, useSession); 
            E = theBankManager.getException();   
            if (E != null) {  
                exceptionThrown = true;  
                theBankManager.setException(null);  
                break tryBlock;  
            }  
        }

Speichern der Objektreferenz, Abfangen der möglichen Ausnahme.

        if (exceptionThrown) {   
            if (E.getExceptionName().equals(   
                       "CorbaConnectionException"))   
            return result([...]("couldn't store the bank") );   
        }
        [...]

Einleiten der Fehlerbehandlung

Listing 9: Auszüge aus dem bankBindAppLogic (Code: Christian Ey ©’98 Netscape)

Das Verbinden zu einem CORBA Server mit NAS Extensions ist hiermit abgeschlossen.


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