Bindung des Netscape Application Servers an CORBA 

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

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