 |
Zurück
Weiter
Verwendung des Frameworks
Frameworks werden durch die Bildung von Unterklassen der einen
oder anderen Framework-Klasse verwendet. Hierbei werden noch nicht
definierte oder zu generisch gestaltete Stellen im Framework
applikationsspezifisch überschrieben. Da die
SessionStorage Klasse abstrakt ist, wegen der beiden
abstrakten Methoden convert(.) und reconvert(.),
müssen wir unsere eigene Speicherklasse definieren, die
mindestens diese beiden Methoden implementiert.
Zusätzliche Framework-Klassen und -Methoden, die beerbt
werden:
- VariableAndParameter: durch
CorbaVariableAndParameter;
Methoden: createMyOwnVariable
- SessionStorage: durch CorbaSession;
Methoden: addValue, setValue, getValue
- ParameterPassing: durch
CorbaParameterPassing;
Methoden: templateDataName, isMyOwnParameter
Eine Erklärung der Klasse CorbaSession befindet sich
in Listing 4.
|
Listing
|
Erklärung
|
package NASCorba;
import StorageAndParameters.*;
import com.kivasoft.types.*;
import com.kivasoft.util.*;
import com.kivasoft.*;
import IE.Iona.Orbix2._CORBA;
import IE.Iona.Orbix2.CORBA.*;
public class CorbaSession extends SessionStorage {
public CorbaSession(ISession2 session) {
super(session);
}
|
Die CorbaSession Klasse ist eine Unterklasse der
SessionStorage Klasse. Sie definiert, wie eine
Variable zu erzeugen ist, wie ein Objekt in ein GXVAL
Objekt zu konvertieren ist und umgekehrt. Sie spezifiziert
auch, daß die Methoden addValue,
setValue und getValue eine CORBA
SystemException "werfen" anstelle der generellen
Exception.
|
public String createMyOwnVariable()
{ [...]
return new
CorbaVariableAndParameter().createVariable();
}
|
erzeugt eine Variable durch Benutzung der Klasse
CorbaVariableAndParameter.
|
public GXVAL convert( Object anObject)
throws SystemException {
// this turns a string into a GXVAL object
IValList temp = GX.CreateValList();
temp.setValString( "temp",
_CORBA.Orbix.object_to_string(
(_ObjectRef)anObject));
return temp.getVal( "temp");
}
|
wandelt eine CORBA Objekt Referenz in eine Zeichenkette
um und speichert diese in einem GXVAL Objekt. Der
CORBA-Aufruf könnte eine SystemException
"werfen".
|
public Object reconvert( GXVAL aValue)
throws SystemException {
// this turns a GXVAL object into a string
IValList temp = GX.CreateValList();
temp.setVal( "temp", aValue);
return _CORBA.Orbix.string_to_object(
temp.getValString( "temp"));
}
|
wandelt eine in einem GXVAL Objekt gespeicherte
Zeichenkette in eine CORBA Objekt Referenz um und gibt diese
zurück. Der CORBA-Aufruf könnte eine
SystemException "werfen".
|
public String addValue( Object anObject)
throws SystemException {
String result;
try {
result = super.addValue( anObject);
}
catch (Exception e){
throw (SystemException)e;
}
return result;
}
|
wandelt die generelle Ausnahme, die von der Methode der
Superklasse "geworfen" wird um in eine CORBA
SystemException.
|
public boolean setValue( String keyString,
Object anObject )
throws SystemException { [...] }
|
wandelt Exception um, siehe this.addValue(.)
|
public Object getValue( String keyString)
throws SystemException { [...] }
|
wandelt Exception um, siehe this.addValue(.)
|
Listing 4: Die Klasse CorbaSession (Quelle:
Code von Christian Ey, © 98 Netscape)
Die Klasse CorbaVariableAndParameter ist eine Unterklasse
von VariableAndParameter und überschreibt die Methoden
variablePrefix() (gibt nun "_UID_" zurück anstelle von
"_VAR_") und parameterPrefix() (gibt nun "_OR_" zurück
anstelle von "_PAR_").
Die Klasse CorbaParameterPassing ist eine Unterklasse von
ParameterPassing und überschreibt die Methoden
templateDataName() (gibt nun "OREF" zurück anstelle von
"TDN") und isMyOwnParameter() (ruft die Methode
isParameter() an der Klasse CorbaVariableAndParameter
auf anstatt an der Klasse VariableAndParameter.
Mit diesen drei Klassen können wir nun relativ einfach Objekt
Referenzen im Session Objekt speichern, sie aus der
Werteliste, die von den HTML-Seiten zurückgegeben wird,
extrahieren und sie dann wieder aus dem Session Objekt
herausnehmen. Nun müssen wir noch die AppLogics selbst
programmieren.
Zurück
Weiter, Autor:
Christian Ey,
http://www.inweb.de/chetan
|
 |