Wie kann ich Benutzersitzungen verwalten, wenn ich Webdienste verwende?

8

Falls der Benutzer mit einer Webanwendung über einen Webbrowser arbeitet, wird die Benutzersitzung vom Anwendungsserver verwaltet. Es kümmert sich um die Erstellung von Sitzungen, Validierung, Timeouts, Disposings, etc ..

Und soweit ich weiß, gibt es im anderen Fall keine solchen Mechanismen, wenn der Benutzer mit der App über einen Remote-Client arbeitet und SOAP-Webdienste verwendet.

Die Frage ist also, wie können wir die Benutzersitzungen im Falle von Webdiensten verwalten und die gleichen Mechanismen des Sitzungsmanagements wie Ungültigkeitserklärung, Verlängerung, Entsorgung anwenden?

    
sainr 07.11.2011, 12:59
quelle

2 Antworten

7

Wenn Sie JAX-WS und SOAP / HTTP verwenden, können Sie auch mit Container Managed Security (und Session-Cookies) arbeiten. Sie müssen nur WebServiceContext in Ihren Dienst einfügen. Es ermöglicht den Zugriff auf alle HTTP-Umgebungsvariablen:

%Vor%

Ein detailliertes Beispiel ist hier verfügbar. Natürlich müssen Ihre Clients dies auch unterstützen (wenn sie JAX-WS-basiert sind, funktioniert es). Als Faustregel gilt jedoch, dass Web-Services überhaupt keinen Zustand beibehalten sollten, sie sollten sich staatenlos verhalten. Siehe dies auf SO .

Bearbeiten: Sie können auf die ServletRequest zugreifen mit:

%Vor%

Die oben erstellte Sitzung sollte sich genauso verhalten wie eine "normale" Websitzung. Sie müssen sicherstellen, dass Ihre Kunden das auch verstehen. Sie müssen bei jedem weiteren Anruf die Sitzungskennung (Cookie) übermitteln.

    
home 07.11.2011, 13:21
quelle
2

Ich denke, Sie sprechen darüber, wie Sie die Web-Services-Sitzung (State-Full-Web-Services) verwalten.
In diesem Fall kann der folgende Link Ihnen helfen:
Ссылка

    
jaxb 07.11.2011 13:25
quelle

Tags und Links