När sessionen dör
5 svar · 216 visningar · startad av Jaar
Spara inte någon information om bokningarna i databas eller så förräns användaren har klickat på "slutför" eller liknande, då löser det sig själv.
Utnyttja att du kan ha olika livslängd på objekt. Sätt scope till "session" så har du det tills användaren antingen stänger sin browser eller gör ett aktivt val och submitar eller avbryter.
Måste spara det i en databas. För att mycket av funktionaliteten ligger redan i store procedures etc. Och jag behöver skapa en bokning etc och anropa en store procedure för att få fram priser för alla tillägg för just den bokningen just den veckan.
Om du tvunget måste lägga det i databasen, kan du ha ett cron jobb eller liknande som rensar upp i databasen med jämna mellanrum. Du kan sätta en tidsstämpel, och om icke avslutade bokningar är mer än x s gamla så tas dom bort från databasen.
Det går inte att kolla när en browser stängs. För att kunna göra det måste browsern skicka en request till servern innan den stängs, och det görs inte.
Att det inte går att kolla när browsern stängs är jag helt med på. Men kan man inte fånga upp när sessionen i servern dör (dvs efter 30 min) och då fånga upp den och göra ett par sista saker?
Eftersom servern (tomcat i mitt fall) går in och dödar objektet efter 30 min (håller koll på sessionen) borde man ju kunna lägga någon form av övervakare på det? Det går väl att lägga listener på klasser för att meddela när de dör, gör det inte?
Japp det går att lägga in en lyssnare. Gör så att du skapar en lyssnare som implementerar javax.Servlet.http.HttpSessionListener.
Lägg sen till detta i web.xml:
<web-app>
.
.
.
<listener>
<listener-class>
mitt.paket.SessionCleanup (förutsatt att du döpt din klass till SessionCleanup såklart)
</listener-class>
</listener>
</web-app>
edit:
missade en tag..