Bindung des Netscape Application Servers an CORBA 

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

Zurück Weiter


Implementierung unseres Frameworks:

Speicherung in der Session

Um unsere Objektreferenzen in der Session ("Sitzung") zu speichern, müssen wir die Objektreferenzen in Zeichenketten umwandeln und dann in einem GXVAL-Objekt speichern. Dieses wird anschließend in einer von uns modifizierten Session gespeichert, die, wie schon zuvor beschrieben, nur GXVAL-Objekte aufnehmen kann.

Um dies zu bewerkstelligen, erzeugen wir eine neue Klasse namens SessionStorage, die die Klasse Session2 beerbt (wird von NAS zur Verfügung gestellt). Dabei fügen wir die Methoden addValue, setValue, getValue und removeValue hinzu. Diese Methoden akzeptieren Objekte jeder Klasse als Ein- und Ausgabeparameter, und erfordern daher zusätzliche Konvertierungsmethoden. Diese heißen convert und reconvert und haben die Aufgabe, ein Objekt beliebigen Typs in ein GXVAL Objekt zu konvertieren und umgekehrt. Da wir an dieser Stelle nicht wissen können, von welchem Typ die in der Session zu speichernden Objekte tatsächlich sind, sind die Konvertierungsmethoden abstrakt und müssen von einer Unterklasse implementiert werden. convert und reconvert "werfen" Exceptions, um Ausnahmebehandlungen zu ermöglichen. In Listing 3 wird die Klasse SessionStorage noch einmal erklärt. Beachten Sie hierbei bitte, daß der Code in diesem Listing verändert wurde, um die Auflistung zu verkürzen und trotzdem den logischen Fluß zu bewahren.

Listing

Erklärung

package StorageAndParameters;
import com.kivasoft.*;
import com.kivasoft.session.*;
import com.kivasoft.types.*;
abstract public class SessionStorage extends Session2
{
    /*.
     * Function:
     * -manages GXVAL objects in the session object
     * -provides methods to add, set, get and remove the values
     */
    public SessionStorage(ISession2 session)
    {
        super(session);
    }

SessionStorage ist eine Unterklasse der Session2 Klasse. Sie stellt ein IValList Objekt zur Verfügung, das GXVAL Objekte speichern kann. Wir definieren die Methoden addValue (Wertepaar hinzufügen), setValue (setzen), getValue (bekommen) und removeValue (löschen), um den Speicher zu manipulieren. SessionStorage ist eine abstrakte Klasse, da die Methoden convert und reconvert abstrakt sind.

    public String createMyOwnVariable()
    {
        /* Precondition:
         * - anObject is not null
         * Postcondition:
         * -this session object contains one more pair of
         *  (Variable name/GXVAL object)
         * Returns:
         * - a unique variable name 
         */
         return new VariableAndParameter().createVariable();
    }

createMyOwnVariable ist eine Factory-Methode, die von setValue aufgerufen wird, um eine Variablenkennung zurückzugeben. Sie muß von der Unterklasse überschrieben werden.

    abstract public GXVAL convert( Object anObject)
        throws Exception;
        /* Precondition:
         * - anObject is not null
         * Returns:
         * - a  GXVAL object 
         * Exception:
         * - the overwriting method may throw an exception */

convert muß von der Unterklasse definiert werden. Es implementiert die Konvertierung eines Objektes in ein GXVAL Objekt. Weil die überschreibende Methode eine Ausnahme "werfen" könnte, müssen wir dies hier spezifizieren.

    abstract public Object reconvert( GXVAL aValue)
        throws Exception;

reconvert muß von einer Unterklasse definiert werden. Es implementiert die Konvertierung eines GXVAL Objektes in ein Objekt.

    public String addValue( Object anObject)
        throws Exception {...}

addValue nimmt ein Objekt, erzeugt eine Variable und speichert das Paar im Session-Objekt durch Aufruf von setValue

    public boolean setValue( String keyString, Object 
        anObject)  throws Exception {   
        boolean result; [...]
        // convert the object
        GXVAL sOts = convert( anObject);   
        // store the (key/GXVAL object) pair in this session   
        result = (this.getSessionData().setVal( keyString, sOts)   
                 == GXE.SUCCESS) 
        return result;   
    }

setValue speichert die Variable zusammen mit dem konvertierten Objekt im Session Objekt

    public Object getValue( String keyString)
        throws Exception { [...]
        GXVAL sOR = this.getSessionData().getVal(keyString);
        return reconvert( sOR);
    }

getValue bekommt das GXVAL Objekt vom Session Objekt und benutzt die Variable als Suchschlüssel. Dann ruft es die reconvert Methode auf und konvertiert das GXVAL Objekt zu einem Objekt.

public int removeValue( String keyString)
    /* Precondition:   
     * - the key string is not null
     */
    {
        [...]
        return this.getSessionData().removeVal( keyString);
    }

removeValue löscht ein Variable/GXVAL-Objekt Paar vom Session Objekt und gibt folgende Werte zurück:

  • GXE.SUCCESS: alles OK
  • GXE.INVALID_ARG: Vorbedingung(en) nicht erfüllt
  • anderer GXE Fehler: wenn es nicht möglich war, das Paar zu löschen
Listing 3: Die Klasse SessionStorage (Quelle: Code von Christian Ey, © 98 Netscape)


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