Das folgende Bild skizziert den Ablauf eine Anfrage durch einen Websurfer. Anschließend werden die einzelnen Schritte und Stationen (in eckigen Klammern angegeben) näher erklärt. Bedingung für den Ablauf ist eine funktionierende InstantWeb-Anwendung. Diese kann mit dem InstantWeb-Generator(Funktionsweise Generator) oder von Hand erzeugt werden.

Das folgende Bild veranschaulicht das Zusammenspiel zwischen CX_Action und einer abgeleiteten Klasse beim drainWindow (Punkt 7a) und parseXmlStream (Punkt 10):

Da der Koordinator beliebig viele, beliebig unterschiedliche ClassiX®-Instanzen verwalten kann ist er auf den ersten Blick etwas
unübersichtlich.
Warum ist das so?
Der Koordinator kann mehrere CX-Projekte gleichzeitig. Will ein ClassiX®-Kunde also mehrere Webapplikationen(z.B. verschiedene interne
Projekte wie Fibu/Lager + externe Projekte Telefonliste/Webshop) anbieteten können diese durch einen einzigen Koordinator gesteuert werden.
Außerdem müssen für jedes Projekt die Instanzen verwaltet werden, da für jeden User der eine InstantWebanwendung benutzt ein ClassiX® des
jeweiligen Projektes gestartet werden muss.
Da das Starten einer ClassiX®-Instanz ein paar Sekunden dauern kann hält der Koordinator für jedes Projekt(i.F. auch Applikation gennant)
ein paar Instanzen auf Halde. Wieviele das mindestenz bzw. höchsten sein müssen/dürfen kann man in der
InstantWeb-init.xml bestimmen.
|
Das nebenstehende Diagramm ist eine starke Vereinfachung der tatsächlichen Beziehungen und soll nur zum verdeutlichen der Grundsätzlichen
Zusammenhänge dienen. Der Koordinator hat eine Map mit ApplicationData-Objekten. Jedes ApplicationData-Objekt entspricht einem CX-Projekt(also einem .cxp). In einem ApplicationData-Objekt werden zwei Maps geführt.
Jede ApplicationInstance=ClassiX®Web-Objekt hat einen CXRequestDispatcher. Ein CXRequestDispatcher kann die 'nativen' Funktionen des CX-Prozesses aufrufen der zu der gemeinsamen ApplicationInstance gehört. In diesen Funktionen wird die Arbeit an das CX weitergeleitet. Wie kommen die Daten vom Webserver zur ApplicationInstance? Doch wie kommt der ServletContainer an einen CXRequestDispatcher? Das ist war nur die grobe Funktionsweise. Tatsählich gibt es noch einige Abhängigkeiten mehr, diese dienen aber hauptsächlich dazu um die Instanzen besser zu verwalten(freigeben, recyclen etc) und um das Ganz Threadsafe zu machen. |
Klicken zum vergößern![]() |