Table of Contents

Timeout für inaktive Broker-Sessions

Wenn der Java-Client unerwartet beendet wird, existieren die Sessions auf dem Broker weiter. Das kann z.B. dann passieren, wenn der Computer ausgeschaltet wird, eine Remote-Desktop-Sitzung beendet wird oder der Client-Prozess direkt über den Task-Manager abgebrochen wird. Mit den hängengebliebenen Sessions werden nicht nur wertvolle Ressourcen im Broker, sondern ggf. auch Lizenzen blockiert. Die Sessions werden nur dann abgeräumt, wenn sich auch der Java-Client regulär beendet.

Die Lizenz-Prüfung orieniert sich an den real vor dem PC sitzenden Personen. Dazu wird auf dem Terminal-Server die ID der Sitzung ermittelt. Genau das kann zu einem Problem werden, wenn die Terminal-Server-Sitzung beendet wird und dieselbe Person später eine neue Sitzung startet und dadurch eine neue Sitzungs-ID erhält. Wenn der Java-Client nicht regulär beendet wurde, blockiert die noch laufende Broker-Sitzung eine Lizenz und in der neuen Terminal-Server-Sitzung wird aufgrund der abweichenden Sitzungs-ID eine weitere Lizenz verbraucht. Aus diesem Grund gibt es einen Mechanismus, der solche Sitzungen im Broker abräumt:

  • Der Client sendet dazu mind. alle 2 Minuten ein Lebenszeichen an den Broker – auch dann, wenn der Benutzer keine Aktionen ausführt – also der Java-Client unbenutzt am Bildschirm steht.

  • Der Broker prüft regelmäßig ob sich der Client gemeldet hat. Sitzungen, die mehr als 5 Minuten kein Lebenszeichen gemeldet haben, werden beendet. Dadurch werden sowohl die Ressourcen als auch die Lizenzen wieder freigegeben. Der Broker prüft dies auch dann, wenn im Moment kein Benutzer aktiv ist.

Mit diesem Mechanismus werden auch Sitzungen abgeräumt, bei denen der Benutzer durch eine Aktion einen sehr langen Request angestoßen UND den Client anschließend hart beendet hat. In diesem Fall wird der noch laufende Request durch Thread.Abort() abgebrochen. Es wird dadurch in diesem Request eine ThreadAbortException ausgelöst.

Warning

Wenn der Client-Arbeitsplatz in den Standby- bzw. Energiesparmodus schaltet, dann sendet der Java-Client kein Lebenszeichen mehr an den Broker. In diesem Fall wird die Sitzung vom Broker beendet. Der Benutzer erhält bei Wiederaufnahme der Arbeit die Meldung Session has been terminated.