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