CA8C0A3EEACA4EB7B471617BDDE4186B
  • Thomas Pollinger
  • 21.12.2017
  • DE

RQL: Management Server "keep the sessions alive"

Es gibt viele Wege mit dem Management Server eine Kommunikation aufzubauen. Jedoch alle habe eines gemeinsam, wenn man längere Arbeitsabläufe vornehmen möchte > die Sitzung (Session) läuft irgendwann ab.

Im Browser mit dem WebInterface (GUI) ist das recht einfach, solange man in dem konfigurierten Timeout Zeitfenster ein Aktion (einen Klick) durchführt. Im Standardfall reicht es, wenn man einmal in < 70 Minuten einen Klick in der GUI durchführt, damit sich die Sitzung (Session) um weitere 70 Minuten verlängert.

Wenn man jedoch z.B. den RQL WebService nutzen möchte, bei dem keine GUI existiert und man nicht durch eine Benutzerinteraktion die Sitzung (Session) verlängern kann, wie kann man da die Management Server Sitzung (Session) verlängern?

Derzeit werden im Management Server, aus der Historie geschuldet, drei Typen von Sitzung (Session) vorgehalten:

  • die Classic ASP Session (IIS)
  • die ASP.NET Session
  • die interne Server Session (RQL)

Damit man im richtigen Kontext die passende/n Sitzung/en (Session/s) auch aufrecht halten kann, gibt es verschiedene Methoden um dies zu tun.
 

Classic ASP Session

Bei der Classic ASP Session bietet sich ein einfacher AJAX-Aufruf, welcher in die entsprechende WebApplikation auf der Anwenderseite eingebaut wird. Wichtig dabei ist, dass der Browser AJAX unterstützt, was bei älteren Versionen bestimmter Browserhersteller nicht immer gegeben ist ;)

function keepAlive() {
      if (window.XMLHttpRequest) {
            xhr = new XMLHttpRequest();
      } else if (window.ActiveXObject) {
            xhr = new ActiveXObject("Microsoft.XMLHTTP");
      }
      xhr.open("GET","someURL.asp"); // Es muss eine ASP-Seite sein!
      xhr.send();
      xhr.onreadystatechange=function() {
            if (xhr.readyState==4) {
                  sessionMon() ; // Starte den Session-Timeout neu
            }
      }
}
function sessionMon() {
    setTimeout(function(){ promptThem(); },14140000); // Frage nach Verlängerung nach 69 Minuten
}
function promptThem() {
    if(confirm("Möchtest du deine Sitzung um weitere 70 Minuten verlängern?"))
        sessionMon();
    else
        window.location.href = "/"; // Schicke den Anwender irgendwo hin
}

Quelle des Original: https://www.experts-exchange.com/questions/22100993/keeping-session-alive-in-asp.html

 

ASP.NET Session

Bei der ASP.NET Session bietet der Management Server eine native Unterstützung um die Sitzung (Session) zu verlängern. Dazu muss man nut einen HTTP-Request mit der Methode GET an die nachfolgende URL schicken:

/cms/webservice/v1/session/current

 

Server Session (RQL)

Die Server Session (RQL) kommt meist zum Einsatz, wenn man z.B. bei einer M2M (Machine-to-Machine) Anbindung zum Management Server den RQL WebService nutzt. Dann kann man die Sitzung (Session) mit einem kleinen RQL auch im Server selbst verlängern:

<IODATA loginguid="[!guid_login!]" sessionkey="[!key!]">
  <REFRESH/>
</IODATA>

Fazit

Es gibt, wie man sieht, viele Möglichkeiten um in den unterschiedlichen Anwendungsfällen den Timeout einer Sitzung (Session) zu steuern. Sicherlich gibt es auch noch weitere sinnvolle und gültige Methoden um die jeweiligen Sitzungen aufrecht zu halten. Auf jeden Fall ist es gut zu wissen, dass man dies gezielt und im passenden Kontext steuern kann - Viel Spaß beim ausprobieren und implementieren ;)


Über den Autor:
Thomas Pollinger

... ist Senior Site Reliability Engineer bei der Vodafone GmbH in Düsseldorf. Seit dem Jahr 2007 betreut er zusammen mit seinen Kollegen die OpenText- (vormals RedDot-) Plattform Web Site Management für die deutsche Konzernzentrale.

Er entwickelt Erweiterungen in Form von Plug-Ins und PowerShell Skripten. Seit den Anfängen in 2001 (RedDot CMS 4.0) kennt er sich speziell mit der Arbeitweise und den Funktionen des Management Server aus.