ein Datenblatt frei , wird für die Generierung der XML-Datei eine Generierungsverarbeitung aus dem Dictionary angestoßen.
Bei Freigabe wird ein neues XML-Dictionary der XTEND-Parameter angelegt.
Nur, wenn die Option 'Technik\Aktualisierung\ Prüfen\Web-Dictionary'derWebsite , Funktion Websites (GESAYS), aktiviert ist, wird das neue Dictionary bei Aktualisierung / F5 der HTML-Seite im Browser automatisch berücksichtigt.
Sonst muss die Dictionary-Aktualisierung mithilfe folgender URL erzwungen werden:
'http://hostname:port/xtend/svc/SolutionX3/DossierX3/SiteXtend/admin/reposit/reload'
wird empfohlen, die gesamte Website über die Funktion freizugeben, damit das Dictionary des XTEND-Servers über die Funktion Freigabe Website (AYTFCYGEN)neu aufgebaut wird.
Es ist zu prüfen, ob die XTEND-Website veröffentlicht wurde, also ob das Feld 'Website veröffentlicht' auf dem Datenblatt 'Website' aktiviert ist.
Technisch greift der XTEND-Server über den per Default auf der Maschine des Haupt-X3-Servers installierten HTTP-Server (Apache) auf die X3-Dateien zu.
Das Wurzelverzeichnis ist das Verzeichnis X3_PUB der Lösung.
Die Aktualisierungen werden per Lesen des 'TimeStamp' (letztes Änderungsdatum) der Datei ermittelt.
Der XTEND-Server liest die XML-Dateien und baut im Speicher für die Optimierung des Parameterzugriffs eine Datenbank auf.
Beim Laden prüft XTEND die Dictionary-Kohärenz und generiert im Fehlerfall eine Ausnahme.
Standardmäßig werden Dictionary und Lokale Menüs auf dem X3-Server gespeichert.
Mit den Konsolenparametern xtend.server.reposit.local=off und xtend.server.menux3.local=off kann lokal eine Lokalisierung der X3WEB-Serverdateien definiert werden (Optimierung).
In diesem Fall muss das Dictionary-Verzeichnis und / oder das Verzeichnis der Lokalen Menüs in \WebData\LOCAL\X3SOLUTION\X3_PUB\kopiert werden.
WebData ist das bei Installation des X3WEB-Servers definierte 'Data-Verzeichnis'.
Standardmäßig werden die Seiten und sämtliche Ressourcen des HTML-Projekts auf dem X3-Server im Verzeichnis
/X3SOL/dossiers/X3_PUB/X3FOLDER/X_TEND/X_HTML/ASAMPLE/LANG/ gespeichert (LANG = Sprachcode der Website).
Der Entwickler muss daran denken, die HTML-Seiten vor dem Test in seinem Browser auf den X3-Server hochzuladen.
Unter UNIX muss geprüft werden, ob für sämtliche Dateien im HTML-Verzeichnis mindestens Leserechte für alle Benutzer vorhanden sind.
Der Prozess beim Lesen der Seiten und beim Ermitteln der Änderungen ist analog zum Dictionary.
Die Prüfung auf Aktualisierungen kann mit einem Parameter der XTEND-Websiteaktiviert oder deaktiviert werden. Ist die Prüfung deaktiviert, so muss für die Berücksichtigung der Seitenänderungen durch den XTEND-Server die URL für das erneute Laden des Dictionarys verwendet werden. Eine Webseite entspricht einer Textdatei mit HTML-Text, auf der vom Entwickler XTEND-Token hinzugefügt wurden.
Nach dem Laden der Seite liest der XTEND-Server den Inhalt und interpretiert den HTML-Code und die Token (Parsing), um die Seite im Speicher in Form einer Objekthierarchie (DOM) darzustellen zu können.
Die Token-Hierarchie wird aus dem XTEND-Protokoll ersichtlich:
++ entspricht der Ebene - CXtdHtmBuild* ist die Objektklasse
+CXtdHtmBuildDom - XTEND
++CXtdHtmBuildNodeHtml - HTML
++CXtdHtmBuildTagHead - <HEAD
+++CXtdHtmBuildTagBase - <BASE
++CXtdHtmBuildAdxScriptLibrary - ALIBJS
++CXtdHtmBuildTagHeadEnd - </HEAD
++CXtdHtmBuildTagBody - <BODY
++CXtdHtmBuildTagForm - <FORM
++CXtdHtmBuildAdxTagAnchor - AHOME
++CXtdHtmBuildAdxTagAnchor - AABOUT
++CXtdHtmBuildAdxCND - ADISPUSERLOGGEDIN
+++CXtdHtmBuildAdxTagAnchor - AUSERACCOUNT
+++CXtdHtmBuildAdxTagAnchor - ADLKLOGOUT
++CXtdHtmBuildAdxCND - ADISPUSERLOGGEDIN
+++CXtdHtmBuildAdxTagAnchor - ALOGIN
...
Der HTML-Parser des XTEND-Servers ist mit der Version
HTML 4.01 (DTD HTML 4.01 Transitional)
kompatibel.
Die einzige Einschränkung, die durch XTEND beim HTML-Design auftritt, liegt darin, dass nur ein einziges HTML-Formular
verwendet werden kann, in dem der gesamte Body der HTML-Seite gekapselt sein muss. <body><form> Inhalt </form></body> Aufbau
Bei der dynamischen Berechnung des Inhalts einer HTML-Seite führt der XTEND-Server folgende Schritte aus:
Schnittstellen vom Typ Datenzugriff:
Aufruf der Website über die Schnittstelle zur Blockentität
2. Rekursiver Durchlauf sämtlicher Hierarchieobjekte (DOM) und Aufruf der Methode
Berechnung des Feldwertes
Berechnung der URL (tag <a></a>) oder des JavaScripts (tag <imput type="button")
Iteration über alle Entitäten und Aufruf der Berechnungsmethode für die abgeleiteten Token
Auswertung des Booleschen Ausdrucks (Kriterien) und ggf. Aufruf der Berechnungsmethode für die abgeleiteten Token
HTML-Generierung
<field>-Token in den Tags <td>, <div>, <span>, <p> etc.
<td adx="myField"></td> ---> <td>Valeur</td>
<field>-Token in einem <select>-Tag
Beispiel: myField = FR, Option = "FR" (attribute selected)
<select adx="myField">
<option value="AT">Austria</option>
<option value="FR">France</option>
</select>
<!--GENERE-->
<select adx="myField">
<option value="AT">Austria</option>
<option selected value="FR">France</option>
</select>
<field>-Token in einem <img>-Tag
<img adx="COUNTRYFLAG">
<!--GEN-->
<img src="/xtend/data/exp(expires,index)/remote/SOL/FLDR/X_TEND/X_HTML/SITE/FRA/FLAGS/BE.gif"/>
Dynamischer Link in einem <a>-Tag
Sonst wird der Tag wie ein Button behandelt (POST-Methode, siehe unten)
<a adx="MyDynLink">Logout</a>
<!--GEN URL'-->
<a href="
http://host:port/xtend/page?DLK=MyDynLink&SOL=SOL...">Logout</a>Dynamischer Link in einem <input type="button">-Tag
Die Parameter richten sich nach dem Kontext und werden von der XTEND-Bibliothek behandelt
<input type="button" adx="MyDLK" value="Anlegen">
<!--GENERIERT DAS ATTRIBUT ONCLICK'-->
<input type="button"
onclick="xtdDoDlk(this,'MyDLK',null,null,null,0,null,event,true,'',false,null,true);"
value="Anlegen"/>
Funktion xtdDoDlk
Sie stößt den JavaScript-Prozess XTEND für die Verarbeitung von Benutzeraktionen an.
Mit der Funktion kann auch der Datenkontext (aCtxTag, aLineIdx) der dynamischen Links wiedergefunden werden, insbesondere für die in den Blockzeilen generierten Token.
function xtdDoDlk(aElmt, aDlk, aProtocol, aBlkId, aCtxTag, aLineIdx, aUrlAdd, aEvent, aSubmit,
aAutoId, aForceAcceptReload, aForceSelBlock, aCheckWebFields)
{/*
aElmt: Vom Benutzer angeklicktes JavaScript-Objekt
aDlk: Angeklickter dynamischer Link
aProtocol: !=null erzwingt das Protokoll (https, http) für diesen Link
aBlkId: Code des Referenzblocks, wenn adx='MyBlocRefence.MyLink'
aCtxTag: Id des Datenkontexts (wenn Aktion mit Parametern vom Typ XTEND-Feld)
aLineIdx: Zeilenindex, wenn das Token in einen {{multi}}-Block gesetzt wurde
aUrlAdd: Enthält den Wert des HTML-Parameters xanchor adx="MyLink:xanchor=#section"
aEvent: Enthält das JavaScript-Ereignisobjekt
aSubmit: True zur Formularvorlage
aAutoId: Von XTEND generierte Id, wenn adx="MyLink:xautoid"
aForceAcceptReload:True, um die Aktualisierung (F5) zu akzeptieren
aForceSelBlock:Id des Blocks, der die Abfrage verarbeitet, sofern != AMAIN
aCheckWebFields: True für die Prüfung der Webfelder
*/
}
Der Datenkontext der Seite wird in der Seite selbst in einem maskierten <span>-Tag gespeichert.
Er umfasst sämtliche Werte der Felder (Typ '<field>-Token', die als Aktionsparameter der dynamischen Links der Seite verwendet werden.
Mit dieser Methode kann die Rückkehr über die Funktion 'Zurück' des Browsers sehr effizient verwaltet werden.
<span id="xtdctx" style="display: none; clear: both;">
XML, das den Seitenkontext enthält
</span>
Serverdatenkontext
Der XTEND-Server pflegt einen Datenkontext, der in einem Datenblockstapel (Stack) verwaltet wird.
Dieser Datenkontext ist wie folgt aufgebaut:
Statischer, von der Seite unabhängiger Teil
Zu Beginn des Seitenaufbaus umfasst der Datenkontext lediglich die Sitzungsdaten.
Blockverarbeitung
Wenn der XTEND-Server einen Block verarbeitet, führt er eine Iteration über sämtliche selektierten Entitäten durch.
Für jede Entität wird folgende Verarbeitung ausgeführt:
1. Die Daten (Entität) werden im Datenkontext auf den Stapel gelegt (push)
--> Die Entität wird oben auf den Stapel (top) gelegt und bei Auflösung des Feldwertes zuerst bearbeitet
2. Aufruf der Aufbaumethode für das HTML der abgeleiteten Token
--> rekursiver Mechanismus, mit dem Blöcke gestapelt werden können
3. Entität erweitern
--> Nach der Verarbeitung sämtlicher abgeleiteter Token erweitert der Server die Entität, bevor er mit der Verarbeitung der nächsten Entität fortfährt
Die oben auf dem Stapel liegende Entität wird über den Block
ACURRENT adressiert.Das Auswahlkriterium 'CODE=ACURRENT.CODE' in einem dynamischen Link gibt an, dass das Element der aktuellen Zeile selektiert werden soll.
Auflösung
1. Durchlauf des Entitätenstapels von oben (top) nach unten (bottom)
2. Stopp, wenn die gelesene Entität ein Feld desselben Namens enthält
Wenn ein Feld gefunden wurde, gibt XTEND den Feldwert zurück. Sonst wird ein leerer Wert zurückgegeben.
Das nachstehende Beispiel zeigt den Status des Stapels mit einem 'Basisblock' Single-Datensatz (BLOCMONO) und zwei Blöcken für mehrere verschachtelte Datensätze (BLOCMULTI1, BLOCMULTI2).
Der erste Multiblock ist auf der zweiten Zeile und der zweite Block (BLOC2) auf der dritten Zeile.
<!adx="BLOCMONO">
<!adx="BLOCMULTI1">
<!adx="BLOCMULTI2">
<span adx="MyField">
<!adx="BLOCMULTI2">
<!adx="BLOCMULTI1">
<!adx="BLOCMONO">
Stapel
Reihenfolge | ASESSION |
3 - Bottom | ENTITE_BLOCMONO |
2 | ENTITE_BLOCMULTI1_LIGNE2 |
1 | ENTITE_BLOCMULTI2_LIGNE3 |
0 - Top | Um den Feldwert von MyField aufzulösen, prüft der XTEND-Server, ob das Feld MyField in den Entitäten vorhanden ist. Dabei wird folgende Reihenfolge beachtet: |
1. ENTITE_BLOCMULTI2_LIGNE3
2. ENTITE_BLOCMULTI1_LIGNE2
3. ENTITE_BLOCMONO
4. ASESSION
Das Prinzip der Wertauflösung ist dasselbe für:
<field>-Token
ASESSION.MyField
Der Sitzungskontext setzt sich aus den nachstehend aufgeführten Datenblöcken zusammen.
Die Auflösung des Feldwertes richtet sich nach der Darstellungsreihenfolge der Blöcke in der Liste.
1. AUSERINF - signierte Benutzerdaten
2. AUSERVAR - Benutzervariablen
3. ASITE - Document Site
4. AMESS - Benutzermeldungen
5. AUSERCRIT - Benutzerkriterien
6. ASYSVAR - Systemvariablen
7. ACONST - <fielt>-Token vom Typ Konstante
HTTP-Abfragen
In der X3WEB-Architektur auf dem XTEND-Server gibt es drei Anwendungsschichten:
1. Apache-HTTP (Front-End) für die Verarbeitung von HTTP-Abfragen
2. Apache-Tomcat für die Webanwendungen
3. XTEND-Webanwendung
Die http-Abfragen an die XTEND-Webanwendung sind über die mit /xtend/*beginnende URL identifiziert.
Der Pfad der XTEND-Webanwendung ist auf der Konsole über folgenden erweiterten Parameter parametrierbar:
xtend.server.virtualpath.context=xtend
Die Webanwendung kann eine bestimmte Anzahl von Abfragen (Servlets) verarbeiten, die durch den 2. Parameter der URL /xtend/servlet/ identifiziert sind:
Das HTTP-Protokoll bietet verschiedene Methoden und Kommandos, mit denen der von der Abfrage auszuführende Aktionstyp spezifiziert werden kann.
Der XTEND-Server antwortet nur den Methoden GET und POST. Diese haben folgende Bedeutung:
Dynamische Links verwenden standardmäßig die POST-Methode, wenn ihnen eine Selektion oder eine Aktion zugeordnet ist.
Diese Methode legt das HTML-Formular <form></form> der Seite per Aufruf der JavaScript-Funktion xtdDoDlk vor (submit).
In dieser Funktion werden die Parameter des dynamischen Links (XML) berechnet und an ein verborgenes Eingabefeld gesendet.
Der Server empfängt alle Daten, die er für die Verarbeitung der dem angeklickten dynamischen Link zugeordneten Aktion oder Selektion benötigt (Felddaten des Formulars sowie vom Client berechneter Kontext).
Dynamische Links können die GET-Methode verwenden, wenn lediglich eine Verzweigung zu einer Seite ausgeführt wird oder wenn kein Aktions- oder Selektionsparameter zu berechnen ist.
Diese Methode wickelt nicht die Vorlage des HTML-Formulars ab, sondern verzweigt zu einer URL, die lediglich die Datenbankparameter enthält (Link, Lösung, Ordner, Website, Sprache).
Nur die GET-Methode ist zu den Suchmaschinen (Webcrawlern) kompatibel.
Aus Sicherheitsgründen können die Internetbenutzer für den Zugriff auf interne Serveranwendungen einen Reverse Proxy verwenden.
Darüber hinaus lässt sich mit Reverse Proxys die echte Serveradresse eines Benutzers maskieren. Ein weiterer Vorteil ist die Vereinfachung bei der Wartung von Websites.
Ist ein Server down, können die Abfragen auf eine für den Client transparente Art vorübergehend an einen anderen Server umgeleitet werden.
Um einen proxyxtend -Alias für einen 'Reverse Proxy' auf dem Apache-Server des für die Umleitung der XTEND-Abfragen an hostxtend zuständigen X3WEB-Servers hostproxy zu definieren, wird folgende Konfiguration verwendet:
Anlage eines 'virtual Hosts' auf Port 80
<VirtualHost _default_:80>
<Location "/proxyxtend/">
ProxyPass "http://hostxtend:28980/"
ProxyPassReverse "http://hostxtend:28980/"
ProxyPassReverseCookieDomain "hostxtend" "hostproxy"
ProxyPassReverseCookiePath "/xtend" "/proxyxtend/xtend"
</Location>
</VirtualHost>
<VirtualHost _default_:443>
...
ProxyRequests Off
SSLProxyEngine on
ProxyPreserveHost On
<Location "/proxyxtend/">
ProxyPass "https://hostxtend:28943/"
ProxyPassReverse "https://hostxtend:28943/"
ProxyPassReverseCookieDomain "hostxtend" "hostproxy"
ProxyPassReverseCookiePath "/xtend" "/proxyxtend/xtend"
SSLRequireSSL
</Location>
...
</VirtualHost>
Wenn der Apache-Server hostproxy die URL http://hostproxy/proxyxtend/xtend/page/*.
Il erhält, verhält er sich wie ein Mandant und führt für den Client die Abfrage http://hostxtend/xtend/page/* an den XTEND-Server aus.
Der XTEND-Server, der die an den Client zurückzusendende HTML-Seite berechnet, muss den Reverse Proxy berücksichtigen, um für den End-Client (den Browser) korrekte URLs zu generieren.
In unserem Fall muss XTEND URLs in /proxyxtend/xtend/* generieren.
Bei der Berechnung der URL muss also zwingend der Reverse Proxy berücksichtigt werden.
Hierbei verwendet XTEND folgende Formel:
-1- Deklaration der Reverse Proxys:
Deklaration der HTTP- und HTTPS-Ports der 'Reverse Proxys' auf der Verwaltungskonsole per Änderung folgender erweiterter Parameter:
# Konfiguration Reverse Proxys
xtend.server.gensetup.proxies.hosts= hostproxy1 hostproxy2
xtend.server.gensetup.proxies.portshttp= 80 80
xtend.server.gensetup.proxies.portshttps= 443 443
-2- Lesen des HTTP-'Referers'
Der Header HTTP-Referer enthält die vom Client für die Verbindung an den Server verwendete URL.
Der XTEND-Server analysiert diese URL und leitet daraus die Existenz eines Reverse Proxys ab, wenn /xtend/ einen Wert als Präfix aufweist (z. B. /proxyxtend/xtend/).
Mit oben beschriebener Konfiguration kann das HTTP-Protokoll in einem HTTPS-Protokoll umgewandelt werden oder umgekehrt. Dem XTEND-Server müssen sowohl der HTTP-Port als auch der HTTPS-Port des Reverse Proxy bekannt sein.
Um korrekt mit einem Reserve Proxy zusammenarbeiten zu können, muss der XTEND-Server also den 'HTTP-Referer', HTTP-Port und den HTTPS-Port des (ersten) Reverse Proxy kennen.
Mit dem Konfigurationsparameter xtend.server.gensetup.http.askreferer=on/off (per Default aktiviert) kann dieser Mechanismus aktiviert oder deaktiviert werden.
Der HTTP-Header 'Referer' ist nicht immer vorhanden. Dies gilt insbesondere, wenn die Adresse in der Adresszeile des Browsers erfasst wird.
Wenn der HTTP-Header 'Referer' nicht in der Abfrage vorhanden ist, sendet der XTEND-Server ein leeres Formular mit automatischer Antwort (für den Benutzer transparent) an den Browser, der in den meisten Fällen den 'Referer' zurückgesendet.
Scheitert dieser Versuch und wird kein Referer zurückgesendet, kann die Existenz eines Reverse Proxy also nicht vom XTEND-Server berücksichtigt werden.
Das Kommunikationsprotokoll zwischen Browser und HTTP-Server ist das HTTP-Protokoll, das "keinen Status"hat.
Der HTTP-Server behält nach der Verarbeitung der Abfrage keine Protokolldatei des Client.
Es wird so verfahren, als würde die Verbindung zwischen Client und Server nach jeder Abfrage beendet.
Diese Funktionsweise ist völlig verschieden vom Client-Server-Modus (X3-Client), bei dem während der gesamten Sitzung eine aktive Verbindung mit dem X3-Server unterhalten wird.
Bei der Entwicklung von Webanwendungen muss eine Verbindung zwischen den verschiedenen Abfragen hergestellt werden können, um diese einem bestimmten Client zuordnen zu können.
Diese Verbindung wird mit HTTP-Cookiesgeschaffen.
Ein Cookie wird auf Initiative des Servers angelegt, wenn dieser im HTTP-Header eine 'Set-Cookie'-Anweisung an den Client sendet.
Die Kopie wird anschließend vom Client im HTTP-Header sämtlicher Abfragen an diesen Server zurückgesendet.
Anweisung acht
Set-Cookie: JSESSIONID=3C9B3EF39FB53069ACB02B6ADA5551A1; Path=/xtend
Mit Path können die Cookies an den Server gefiltert werden
In unserem Fall wird JSESSIONID in allen Abfragen zurückgesendet, deren URL folgendermaßen beginnt: /xtend/ (http://host:port/xtend/....)
Die Identifizierung über Cookies (und damit die Funktionsweise der Webanwendung) ist nur gewährleistet, wenn der Browser Cookies vom Typ Sitzung (ungesicherte) akzeptiert.
Dies ist bei Browsern zumeist die Standardeinstellung
Das Konzept des 'Clients' ist von Browser zu Browser verschieden und hängt von der Art der Cookie-Verwaltung ab.
Die Benutzersitzung, mit der jedem Client ein eigener Datenkontext zugeordnet werden kann, wird vom TOMCAT-Server mit so genannten Servlets verwaltet.
Um die Abfragen zu identifizieren und zur richtigen Benutzersitzung umzuleiten, verwaltet der TOMCAT-Server eine spezielle Cookie-Sitzung mit dem Code JSESSIONID.
Vom TOMCAT-Server verwaltetes Cookie
Set-Cookie: JSESSIONID=3C9B3EF39FB53069ACB02B6ADA5551A1; Path=/xtend
JSESSIONID ist die Id der TOMCAT-Sitzung
Das Cookie JSESSIONID ist nicht persistent, d. h. nach dem Verlassen des Browsers wird es nicht aufbewahrt.
Wenn der Benutzer seinen Browser schließt, verliert er also seine Sitzung und damit seinen Datenkontext.
Die Sitzung wird lediglich für eine über folgenden Konsolenkonfigurationsparameter parametrierbare Dauer im Speicher gehalten:
xtend.server.gensetup.http.session.timeout
Dieser Parameter gibt die vom TOMCAT-Server tolerierte Sitzungsinaktivitätszeit in Minuten an.
Wird innerhalb dieser Dauer keine Aktivität (erhaltene Abfrage) ermittelt, wird die Sitzung unterbrochen, und der Datenkontext geht verloren.
Der Xtend-Server verwaltet über das Cookie XADXIDseine eigene Sitzungs-Id.
Dieses Cookie ist persistent, wird also vom Browser gesichert, sofern hierfür eine Berechtigung vorliegt.
Wenn der Benutzer seinen Browser öffnet und sich mit dem XTEND-Server verbindet, wird das Cookie XADXID in der Abfrage (sofern vorhanden) versendet, und der Server versucht, die Benutzersitzung (TOMCAT) für die erneute Verbindung wiederzufinden.
Vom XTEND-Server verwaltete Cookies
Set-Cookie XADXID=123332746651556912893670; Expires=Sat, 30-Jan-2010 14:57:46 GMT; Path=/xtend
Mit dem Konsolenkonfigurationsparameter xtend.server.gensetup.http.cookie.sess.persist=on (per Default aktiviert) kann die Verwaltung der erneuten Verbindung nach Verlassen des Browsers aktiviert bzw. deaktiviert werden.
Auf der Wiederverbindungsseite der Website (fakultativ) kann der Benutzer darüber informiert werden, dass seine Sitzung wiederhergestellt wurde.
XTEND bietet eine Funktionsweise ohne Cookies, bei der die Sitzungs-Id JSESSIONID in der URL weitergegeben wird.
Dieser Modus kann auf folgende Arten aktiviert werden:
Im Modus ohne Cookies müssen die URLs um einen zusätzlichen Parameter erweitert werden:
http://ecfdalbopro:28980/xtend/page;jsessionid=E04AEF0615702B3C7E52107ED6C17D8A?DLK=DLKTESTMAPPING...
In diesem Modus können Links zu anderen Webseiten nicht verwendet werden, da die Sitzungs-Id nicht weitergegeben wird und die Benutzersitzung verloren geht.
In diesem Absatz wird beschrieben, wie die HTTP-Abfragen vom XTEND-Server verarbeitet werden.
1. Eingang der HTTP-Abfrage
2. Filterung der Abfrage gemäß URL
3. Übertragung der Abfrage an den 'Apache-TOMCAT-Server' über mod_jk
mod_jk: 'Modul Jakarta' ist der Name des Open-Source-Projekts, aus dem TOMCAT entstand
JkMount xtend/portal* ajp13
JkMount xtend/page* ajp13
JkMount xtend/err/* ajp13
JkMount xtend/ajax/* ajp13
JkMount xtend/x3rsrc/* ajp13
JkMount xtend/htmrsrc/* ajp13
JkMount xtend/x_protect/* ajp13
JkMount xtend/data/* ajp13
JkMount xtend/svc/* ajp13
JkMount xtend/*.jsp ajp13
1. Anlage eines Tasks (Thread) für die Abfrageverwaltung
2. Suche nach dem Service (Servlet-Objekt) für die Verarbeitung von HTML-Seiten,
3. Suche nach der Sitzung mit dem JSESSIONID-Cookie
4. Aufruf der Methode doPost oder doGet des Service
1. Initialisierung
1. Falls neue TOMCAT-Sitzung
2. Bei Umleitung (Protokolländerung etc.)
3. Lesen der XTEND-Parameter
2. Neue Sitzung
1. Warteschlange, falls der Benutzer eine von einer anderen Abfrage gestartete Sitzung hält
2. Positionierung des Kontextes auf der XTEND-Website
3. Prüfung der Aktualisierung des XTEND-Dictionarys
3. Prüfungen
1. Protokollprüfung
2. Signierter Benutzer: Prüfung der Inaktivitätsdauer der XTEND-Sitzung
3. Bei Weiterleitung der Seite
Parameter 'Geschützter Zugriff' des Websitedatenblatts
1. Prüfung der Zugriffsrechte des Benutzers
2. Der Benutzer verfügt nicht über die benötigten Zugriffsrechte
4. Verarbeitung der Webaktion , wenn dem dynamischen Link eine Aktion zugeordnet ist
5. Anzeige der Seite
1. Prüfung der Seitenaktualisierungen
2. Initialisierung der <block>-Token (Abfragen)
3. HTML-Berechnung
6. Antwortversand an den Browser