Unterstützung der Sitzungsverwaltung
WebSphere Application Server stellt Funktionen für die Sitzungsverwaltung bereit, die die in der Spezifikation von Servlet-APIs beschriebene Schnittstelle "javax.servlet.http.HttpSession" unterstützen.
In Übereinstimmung mit der API-Spezifikation der Servlet 2.3 unterstützt die Sitzungsverwaltung für Sitzungen als Geltungsbereich ein Webmodul. Nur Servlets im selben Webmodul können auf die Daten zugreifen, die einer bestimmten Sitzung zugeordnet wurden. Mehrere Anforderungen desselben Browsers, von denen jede eine eindeutige Webanwendung angibt, führen zu mehreren Sitzungen mit einer gemeinsamen Sitzungs-ID. Alle Sitzungen, die eine gemeinsame Sitzungs-ID haben, können ohne Auswirkung auf die anderen Sitzungen ungültig gemacht werden.
Sie können bei jeder Webanwendung ein Zeitlimit für Sitzungen konfigurieren. Wenn das Zeitlimit für Webanwendungen auf 0 (Standardeinstellung) gesetzt wird, wird das Zeitlimit des Sitzungsmanagers verwendet.
Wenn ein HTTP-Client mit einem Servlet interagiert, werden die einer Reihe von Clientanforderungen zugeordneten Statusinformationen als HTTP-Sitzung dargestellt und durch eine Sitzungs-ID gekennzeichnet. Die Sitzungsverwaltung ist für die Verwaltung von HTTP-Sitzungen zuständig, sorgt für die Speicherung der Sitzungsdaten, ordnet Sitzungs-IDs zu und verfolgt mithilfe von Cookies oder URL-Neufassungsmethoden die jeder Clientanforderung zugeordnete Sitzungs-ID. Die Sitzungsverwaltung kann sitzungsbezogene Informationen auf verschiedene Arten speichern:
- Im Hauptspeicher des Anwendungsservers (Standardeinstellung). Diese Informationen können nicht mit anderen Anwendungsservern gemeinsam verwendet werden.
- In einer Datenbank. Diese Speicheroption ist unter der Bezeichnung datenbankpersistente Sitzungen bekannt.
In einer anderen Instanz von WebSphere Application Server. Diese Speicheroption ist unter der Bezeichnung Replikation von Sitzungen zwischen Speichern bekannt.
Die letzten beiden Optionen werden als verteilte Sitzungen bezeichnet. Verteilte Sitzungen sind für die Verwendung von HTTP-Sitzungen mit Failover unbedingt erforderlich. Wenn ein Anwendungsserver eine einer Sitzungs-ID zugeordnete Anforderung erhält, die sich zu dem Zeitpunkt nicht im Hauptspeicher des Servers befindet, kann dieser den erforderlichen Sitzungsstatus durch Zugriff auf den externen Speicher (Datenbank oder Replikation zwischen Speichern) erhalten. Wenn die Unterstützung für verteilte Sitzungen nicht aktiviert ist, kann ein Anwendungsserver nicht auf die Sitzungsinformationen für HTTP-Anforderungen zugreifen, die an andere Server geschickt werden als den, auf dem die Sitzung ursprünglich erstellt wurde. Die Sitzungsverwaltung implementiert die Caching-Optimierungen, um den Systemaufwand beim Zugriff auf den externen Speicher möglichst gering zu halten, insbesondere wenn aufeinander folgende Anforderungen an denselben Anwendungsserver weitergeleitet werden.
Wenn Sie den Sitzungsstatus in einem externen Speicher ablegen, erhalten Sie außerdem in einem bestimmten Maß einen Fehlertoleranzbereich. Wenn ein Anwendungsserver offline geht, steht der Status seiner aktuellen Sitzungen nach wie vor im externen Speicher zur Verfügung. Dadurch können andere Anwendungsserver die Verarbeitung nachfolgender, dieser Sitzung zugeordneter Clientanforderungen fortsetzen.
Das Speichern des Sitzungsstatus an einer externen Position garantiert nicht unbedingt, dass er im Fall eines Serverausfalls nach wie vor vorhanden ist. Wenn beispielsweise ein Server beim Ändern des Status einer Sitzung ausfällt, gehen einige Informationen verloren. Dies kann sich auf die nachfolgende Verarbeitung anhand dieser Sitzung auswirken. Diese Situation stellt jedoch lediglich einen sehr kleinen Zeitraum dar, in dem das Risiko des Verlusts von Sitzungsdaten besteht.
Der Nachteil beim Speichern des Sitzungsstatus in einem externen Speicher besteht darin, dass der Zugriff auf den Sitzungsstatus an einer externen Position wertvolle Systemressourcen verbrauchen kann. Mit der Sitzungsverwaltung können Sie die Systemleistung verbessern, indem Sie die Sitzungsdaten auf Serverebene in den Cache stellen. Mehrere aufeinander folgende Anforderungen, die an denselben Server übertragen werden, finden die erforderlichen Statusangaben im Cache und verringern dadurch die Anzahl der tatsächlichen Zugriffe auf den externen Speicher mit den Statusangaben (und damit auch den mit dem externen Zugriff verbundenen Systemaufwand).
