Anfang des Inhaltsbereichs

Hintergrunddokumentation Stateful BSP-Applikationen Dokument im Navigationsbaum lokalisieren

Eine stateful BSP Applikation wird – wie eine „normale" SAP-Transaktion – über alle Benutzerinteraktionen hinweg in einem einzigen Kontext (Rollbereich) ausgeführt. Dadurch stehen Daten, die vom Benutzer im Laufe der Ausführung der Applikation eingegeben oder die durch die Applikation selbst ermittelt wurden, potenziell über die gesamte Ausführungsdauer der Session hinweg zur Verfügung.

Da das HTTP-Protokoll selbst stateless arbeitet und keinen impliziten Mechanismus kennt, um unabhängige Requests einer gemeinsamen logischen Sitzung zuzuordnen, verwendet die BSP-Laufzeit Session-Cookies, um Requests zu einer Session zusammenzufassen. Der Name des Cookies lautet sap-contextid, der Gültigkeitsbereich ist auf die URL der BSP-Applikation eingegrenzt. Dies bedeutet, dass eine BSP-Applikation innerhalb eines Browsers zu einem Zeitpunkt nur einmal ausgeführt werden kann. Unterschiedliche BSP-Applikation lassen sich natürlich nebeneinander in einem einzigen Browser betreiben. Selbstverständlich können mehrere Benutzer/Browser die gleiche BSP-Applikation parallel beliebig häufig ausführen.

Vorteil

Der wesentliche Vorteil von stateful BSP-Applikationen ist die einfachere Programmierung. Wie gewohnt kann hier auf zuvor ermittelte Daten zugegriffen werden und das Nachlesen bzw. –berechnen von Daten kann häufig entfallen. Bei Datenbank-intensiven Anwendungen kann dies erhebliche Performanzvorteile im Vergleich zu einer Herangehensweise haben, bei der häufig identische Leseoperationen bei jedem Request ausgeführt werden müssen.

Nachteil

Der wesentliche Vorteil ist aber gleichzeitig auch Ursache für den wesentlichen Nachteil, nämlich die Kompensation der Ressource „Laufzeit" durch die Ressource „Speicher": Die Anzahl parallel möglicher Sitzungen in einem SAP Web Application Server ist nicht zuletzt durch die Menge verfügbaren Speicherplatzes beschränkt. Ist dieser erschöpft, können keine weiteren Sitzungen gestartet werden und Benutzer werden abgewiesen.

Ein weiterer Nachteil liegt in der Tatsache begründet, dass Web Browser im Gegensatz zum SAPGUI keine Abmeldung beim Server vornehmen, d.h. wenn ein Benutzer in seinem Web Browser zu einer anderen Website navigiert, wird der SAP Web Application Server hiervon nicht in Kenntnis gesetzt. Eine offene Sitzung kann damit nicht beendet werden und verbleibt solange im Applikationsserver, bis ein Timeout-Mechanismus greift und den Kontext freigibt. Das dies jedoch in der Regel einige Zeit dauern kann, werden begrenzte Ressourcen unnötig lange im Applikationsserver blockiert.

Hinweis

Beachten Sie bei stateful Applikationen, dass sich der Zustand der Anwendung sehr leicht vom Zustand unterscheiden kann, den ein Benutzer auf Grund seiner Benutzungsoberfläche annimmt. Dies kann durch das Navigieren in der Browser-Historie oder durch das Benutzen der Browser-Back-Button geschehen, die nicht notwendigerweise dem Server mitgeteilt werden: So kann es vorkommen, dass ein Benutzer zu einer Webseite zurück navigiert und diese erneut sendet, obwohl die Anwendung mit anderen Anfragen rechnet. Dem ist in der Anwendung durch entsprechende Maßnahmen Rechnung zu tragen.

Mit dem nächsten Release soll ein zumindest ein Detektionmechanismus für derartige Situationen angeboten werden.

Siehe auch:

Stateless BSP-Applikationen

Mischformen

Einstellung als stateful oder stateless

Stateful oder stateless programmieren?

Ende des Inhaltsbereichs