# Frage zu Session-Lebensdauer



## flashfactor (4. Nov 2005)

Servus,
Wie kann ich die Session begrenzen das es so wie im PHP nach dem Beenden der IE Fenster die Session zu beenden.
Ich weiss das PHP die Session nicht wirklich sofort abbaut aber man kann Sie nicht mehr nutzen.

Gruß

Der Grund:

Meine Applikation gibt es in 2 Varianten einer angemeldeten Variante und einer öffentlichen Variante.
Das Problem ist wenn ich einmal angemeldet war und alle Fenster schließe und dann die öffentliche Variante öffne kommt immer die angemeldete Variante und er nutzt auch erfolgreich die Session-Variable.

Eine Idee war von mir. woher die Seite aufgerufen wurde(Dateiname wo der Link steht) und somit zufiltern.

Aber lieber wäre mir das die Lebensdauer der Session begrenzt auf die IE-Fenster ist.

Gruß


----------



## Bleiglanz (4. Nov 2005)

Hä? hast du irgendwas konfiguriert?

DefaultLebensdauer einer Sitzung IST die BrowserFensterLebensdauer

allerdings machen manche Browserhersteller daraus "Dauer der Exisiterenen Programminstanz"


BTW geht das auch mit PHP nicht, der Server kriegt NIE mit wenn ein "Browserfenster" geschlossen wird


----------



## flashfactor (7. Nov 2005)

Kann man abe rirgendwie erfahren wie der Seitenname, woher die Weiterleitung durchgeführt wurde.

Bsp.:

Angemeldete Variante:

Start.jsp
    ->Session wird aufgebaut und alle Daten werden ermittelt.
    ->Weiterleitung zur Index-Servlet
    ->Wenn Parent-Seite Start.jsp wird die Session nicht als invalide angesehen.

Nicht angemeldete Variante:

Index-Servlet
    ->Session wird als invalide gesetzt.

Kennt wär die Lösung.


----------



## LordSam (7. Nov 2005)

Zur letzten Frage: So kriegst du den Namen der vorhergehenden Seite raus:

```
String referer = request.getHeader("referer")
```

Diese Information wird vom Browser übermittelt. Wird die Seite direkt aufgerufen oder von einer anderen Domäne aus (Browserabhängig) erhält man nur 'null'. 

Was die Session angeht... Die Session hat eine definierte mindest-lebensdauer. Der Server hält die Session solange aufrecht bis sie X minuten nicht mehr verwendet wurde. Damit der Server einen Request einer Session zuordnen kann muss er die Session-ID vom Browser übermittelt bekommen. Dafür gibts zwei varianten: Per cookie oder per URL-Parameter. Die Cookies die Tomcat verwendet sind AFAIK immer Session-Cookies, d.h. das Cookie lebt nur in der Browser-Instanz welche die Seite aufgerufen hat. Wird die Browser-Instanz sauber beendet ist der Cookie weg -> Die Session wird nach X minuten aufgeräumt. 

Bei dem zweiten Verfahren per URL muss an jeden Link innerhalb deiner Seiten die entsprechende Session-ID angehängt werden. Ich schätze aber mal nicht das du diese Form des session-handlings verwendest...

Wenn du weiterhin probleme hast würd ich mal prüfen ob Du auch wirklich die Session verwendest oder nicht vielleicht ein paar eigene, globale Variablen verwendest anstelle des session objekts.

Zum test kannst Du ja mal eine Logout funktion einbauen welche die Session beendet:


```
request.getSession().invalidate();
```
[/code]


----------

