Verwijderd schreef op 24 januari 2003 @ 00:23:
Na enig speuren in mijn boeken, bleek de finalize helemaal niet te bestaan. Het klinkt dus heel leuk, maar het bestaat niet. Zelfs Sun kent het niet. Maar nu even een goed antwoord geven.
Indien je zelf een sessie wilt afsluiten, doordat een gebruiker aan het hacken geslagen is of zo, gebruik je session.invalidate(); via HttpSession session = request.getSession(true); maak je weer een nieuwe aan.
Maar waarschijnlijk wil je het volgende weten! De HttpSessionBindingListener interface zorgt voor de notificatie als een object aan een sessie wordt gebonden of wordt ontbonden (hetgeen het geval is als de sessie eindigd). Door deze interface te implementeren krijg je in je object 2 extra methodes:
public void valueBound (HttpSessionBindingEvent event) ;
public void valueUnbound (HttpSessionBindingEvent event) ;
een voorbeeld: voorBeeld.java
import javax.servlet.http.*;
public class voorBeeld implements HttpSessionBindingListener {
//globale variabelen
public voorBeeld() {
//Doe wat nodig is bij opstarten
}
public synchronized void valueBound (HttpSessionBindingEvent event) {
//doe maar wat als het object aangeroepen wordt door de sessie
}
public synchronized void valueUnbound (HttpSessionBindingEvent event) {
//Hier mogen de opruimwerkzaamheden plaatsvinden
}
//de rest van de functies die je wil toevoegen
}
Zo zie je dat de beeindiging van de sessie niet door de sessie wordt afgehandeld maar door het object. Wel geeft de sessie dit automatisch door bij het aanroepen en afsluiten van de sessie.