Eine von einer HTTP-Anforderung erstellte Sitzung wird immer sofort instanziert, sodass alle nachfolgenden HTTP-Anforderungen, die diesen Sitzungskontext erfordern, von der Sitzung in eine Warteschlange gestellt werden.
In diesem Beispiel kann ein lokaler Hostclient auf die Sitzung mit der angegebenen Sitzungs-ID, session_63315422814117, zugreifen, die innerhalb der Datenbank, DB-Name, die ihrerseits den Dienst session_service mit der folgenden URL ausführt, sobald die Sitzung auf dem Server mit der Prozedur sa_set_http_option erstellt wurde.
http://localhost/dbname/session_service?sessionid=session_63315422814117 |
Eine Webanwendung kann eine Möglichkeit zur Verfolgung der Nutzung der aktiven Sitzung auf dem HTTP-Webserver erfordern. Sitzungsdaten können mit dem Funktionsaufruf NEXT_CONNECTION gefunden werden, der die aktiven Datenbankverbindungen durchläuft und sitzungsbezogene Eigenschaften, wie etwa SessionID, überprüft.
Die folgenden SQL-Anweisungen zeigen die Verfolgung einer aktiven Sitzung:
CREATE VARIABLE conn_id LONG VARCHAR; CREATE VARIABLE the_sessionID LONG VARCHAR; SELECT NEXT_CONNECTION( NULL, NULL ) INTO conn_id; conn_loop: LOOP IF conn_id IS NULL THEN LEAVE conn_loop; END IF; SELECT CONNECTION_PROPERTY( 'SessionID', conn_id ) INTO the_sessionID; IF the_sessionID != '' THEN PRINT 'conn_id = %1!, SessionID = %2!', conn_id, the_sessionID; ELSE PRINT 'conn_id = %1!', conn_id; END IF; SELECT NEXT_CONNECTION( conn_id, NULL ) INTO conn_id; END LOOP conn_loop; PRINT '\n'; |
Im Meldungsfenster des Datenbankservers sehen Sie nun Daten, die der folgenden Ausgabe ähneln:
conn_id = 30 conn_id = 29, SessionID = session_63315442223323 conn_id = 28, SessionID = session_63315442220088 conn_id = 25, SessionID = session_63315441867629 |
Das explizite Löschen einer Verbindung, die einer Sitzung gehört, führt dazu, dass die Verbindung geschlossen und die Sitzung gelöscht wird. Wenn die zu löschende Sitzung aktuell aktiv ist und eine HTTP-Anforderung bedient, wird die Anforderung für die Löschung markiert und sie erhält ein Abbruchsignal zum Beenden der Anforderung. Wenn die Anforderung beendet wird, wird die Sitzung gelöscht und die Verbindung geschlossen. Das Löschen einer Sitzung kann dazu führen, dass ausstehende Anforderungen in der Warteschlange der betreffenden Sitzung in eine neue Warteschlange gestellt werden.
Falls die Verbindung aktuell nicht aktiv ist, wird die Sitzung für die Löschung markiert und an den Anfang der Sitzungs-Timeoutwarteschlange gestellt. Die Sitzung und die Verbindung werden beim nächsten Timeoutzyklus gelöscht (normalerweise innerhalb von 5 Sekunden). Für die Löschung markierte Sitzungen können von keiner neuen HTTP-Anforderung verwendet werden.
Alle Sitzungen gehen verloren, wenn die Datenbank gestoppt wird.
![]() |
Kommentieren Sie diese Seite in DocCommentXchange.
|
Copyright © 2013, SAP AG oder ein SAP-Konzernunternehmen. - SAP Sybase SQL Anywhere 16.0 |