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

 

Administration

Eine Webanwendung muss möglicherweise in der Lage sein, die Nutzung der aktiven Sitzung auf dem Datenbankserver zu protokollieren. Sitzungsdaten können mit dem Funktionsaufruf NEXT_CONNECTION gefunden werden, der die aktiven Datenbankverbindungen durchläuft und sitzungsbezogene Eigenschaften, wie etwa SessionID, überprüft. Der folgende SQL-Code veranschaulicht diese Möglichkeit:

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 Fenster "Datenbankservermeldungen" werden möglicherweise folgende Angaben angezeigt.

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 gelöschte Sitzung aktuell aktiv ist und eine HTTP-Anforderung ausführt, wird die Anforderung für die Löschung markiert. Sie erhält ein Abbruchsignal zum Abschluss der Anforderung. Wenn die Anforderung abgeschlossen 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. Dieser Vorgang ist unter Sitzungs-ID löschen oder ändern beschrieben. Falls die Verbindung aktuell nicht aktiv ist, wird die Sitzung für die Löschung markiert und an den Anfang der Warteschlange für Sitzungszeitüberschreitung gestellt. Die Sitzung und die Verbindung werden beim nächsten Zeitüberschreitungszyklus gelöscht (normalerweise innerhalb von 5 Sekunden). Für die Löschung markierte Sitzungen können von keiner neuen HTTP-Anforderung verwendet werden.

Wenn Sie eine Datenbank bedingungslos stoppen, werden alle Datenbankverbindungen gelöscht. Dadurch werden auch alle Sitzungen in dem betreffenden Datenbankkontext gelöscht. Dies ist garantiert, da für einen Sitzungskontext eine gültige Datenbankverbindung vorhanden sein muss und eine Datenbankverbindung jeweils nur einer Sitzung zugewiesen sein kann. Die Sitzung und die Datenbankverbindung müssen sich innerhalb desselben Datenbankkontexts befinden.

Weitere Hinweise zu Sitzungen in einem Datenbankkontext finden Sie in der Beschreibung des Sitzungsschlüssels unter HTTP-Sitzung erstellen.