Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 11.0.1 (Deutsch) » SQL Anywhere Server - Programmierung » SQL Anywhere Datenzugriff-APIs » SQL Anywhere-Webdienste » HTTP-Sitzungen verwenden

 

Sitzungssemantik

Eine HTTP-Anforderung kann einen HTTP-Sitzungskontext erstellen. Eine von der Anforderung erstellte Sitzung wird immer sofort instanziert, sodass alle nachfolgenden HTTP-Anforderungen, die diesen Sitzungskontext erfordern, von der Sitzung in eine Warteschlange gestellt werden.

Eine HTTP-Anforderung, die ohne Sitzung beginnt, aber ihren Sitzungskontext erstellt hat, ist der Ersteller seiner Sitzung. Die Erstelleranforderung kann ihre Sitzung ändern oder löschen, wobei die Änderung bzw. Löschung sofort ausgeführt wird. Eine HTTP-Anforderung, die innerhalb eines Sitzungskontexts beginnt, kann ihre Sitzung auch ändern oder löschen. Durch die Änderung ihrer Sitzung wird sofort eine laufende Sitzung erstellt, die voll funktionsfähig ist, abgesehen davon, dass keine andere HTTP-Anforderung zu ihrem Eigentümer werden kann (eine eingehende Anforderung, die die laufende Sitzung benötigt, wird stattdessen in die Warteschlange der Sitzung platziert). Das Ändern oder Löschen einer Sitzung einer Erstelleranforderung ändert also den aktuellen Sitzungskontext sofort, während eine Anforderung, die ihre Sitzung nur ändert, ihre laufende Sitzung modifiziert. Wenn eine HTTP-Anforderung fertig gestellt wird, überprüft sie, ob sie eine laufende Sitzung hat. Wenn eine laufende Sitzung vorhanden ist, löscht sie ihre aktuelle Sitzung und ersetzt sie durch die laufende Sitzung. Die Datenbankverbindung, die von der Sitzung in den Cache geschrieben wird, wird in den neuen Sitzungskontext verschoben, und alle Statusdaten, wie die temporären Tabellen und erstellten Variablen, werden bewahrt.

In allen Fällen, in denen eine HTTP-Sitzung gelöscht wird, werden alle Anforderungen in der Warteschlange freigegeben, sodass sie ohne Sitzungkontext ausgeführt werden können. Anwendungscode, der erwartet, dass eine Anforderung innerhalb eines Sitzungskontext ausgeführt wird, muss mit dem Aufruf von CONNECTION_PROPERTY('SessionID') versuchen, einen gültigen Sitzungskontext zu erwerben.

DECLARE ses_id LONG VARCHAR;
SELECT CONNECTION_PROPERTY( 'SessionID' ) INTO ses_id;

Wenn eine HTTP-Anforderung absichtlich oder aufgrund eines Netzwerkausfalls abgebrochen wird, wird eine vorhandene laufende Sitzung gelöscht, wobei der Originalsitzungskontext bewahrt wird. Eine HTTP-Erstelleranforderung ändert den Sitzungsstatus sofort, unabhängig davon, ob sie abgebrochen oder normal abgeschlossen wurde.