 |
Zurück
Weiter
Das Übertragen von Objektreferenzen
Ein oft genutzter Ansatz, Daten unter AppLogics auszutauschen, ist
es, das Session- und State-Management des NAS zu nutzen. Für
unseren Fall kommt nur ein Session Objekt in Frage, da ein
sog. State Objekt für alle AppLogics gleich ist, wir jedoch
verschiedene gleichzeitige Benutzer haben, die jeweils einen eigenen
Zustand der Applikation benötigen.
Bei der Benutzung des zur Verfügung gestellten Session
Objektes treten jedoch Probleme auf. Ein Session Objekt des
NAS kann nur Objekte vom Typ GXVAL speichern. Ein GXVAL
wiederum kann ausschließlich Integers, Strings und BLOBs
(Binary Large OBjects) aufnehmen. Dies zwingt uns, die CORBA-Proxies
zu Zeichenketten (Strings) zu verwandeln und die Zeichenketten in das
Session Objekt zu speichern. Des weiteren muß es einem
AppLogic möglich sein, die richtige Objektreferenz zu erhalten.
Hierzu identifizieren wir jede Objektreferenz mit einem eindeutigen
Identifizierer (unique ID ==> UID) und speichern ein Paar aus UID
und Objektreferenz in dem Session Objekt. Dies tun wir auch,
um unabhängig von der Applikation zu sein, da wir eine
generische Lösung anbieten möchten.
Da die Objektreferenzen von einem AppLogic zum anderen
weitergegeben werden müssen, geben wir die UID jeder
benötigten Objektreferenz an die HTML-Seite weiter. Das
nächste AppLogic kann nun mit Hilfe der UID und der Session ID
die betreffenden Objektreferenzen aus der Session erhalten. Es stellt
sich die Frage, warum wir nicht einfach die Objektreferenz an die
HTML-Seiten weitergegeben haben. Zum Einen haben wir dir
Möglichkeit, eine Objektreferenz aus der Session zu
löschen, und somit einen Zugriff auf dieses Objekt zu
verhindern. Wenn Die Objektreferenz in der HTML-Seite wäre (z.B.
durch Drücken des "zurück"-Knopfes im Browser), könnte
ein AppLogic nicht entscheiden, ob auf dieses Objekt vom Benutzer
noch zugegriffen werden darf oder nicht - es würde in jedem Fall
den Zugriff gestatten. Zum anderen kann durch das Schützen der
Objektreferenz ein eventueller direkter Zugriff des Benutzers auf das
Objekt, ohne Kontrolle durch die AppLogics, verhindert werden.
Um zu verhindern, daß ein Objekt benutzt wird, auf das der
Benutzer keine Zugriffsrechte mehr hat, wird einfach das
entsprechende UID/Objektreferenz Paar aus dem Session Objekt
gelöscht und ein späterer Zugriff auf dieses dann nicht
mehr vorhandene Paar mit einer Fehlermeldung beantwortet.
Um die UIDs unter den AppLogics auszutauschen, senden wir diese
als HIDDEN VALUEs an die HTML-Seiten. Die HIDDEN VALUEs
müssen in jeder FORM der HTML-Seite vorkommen, die ein
weiteres AppLogic der Anwendung als FORM ACTION angegeben hat.
Zurück
Weiter, Autor:
Christian Ey,
http://www.inweb.de/chetan
|
 |