scusa ma perchè devi usare il database per vedere se l'utente è loggato
poi vedendo la classe
public static User user;
private boolean loggedIn;
private List localeItems;
public static Connection conn;
vengono un po di brividi
non penso tu abbia molta dimestichezza magari ti riesco a dare dei consigli utili
non c'è modo di sapere se l'utente ha chiuso il browser, lavori sull'http che di natura non mantiene la sessione.
C'è un metodo molto più veloce anzi direi "molto mejo!" per fare tutto ciò
Innanzi tutto leva dal Database l'informazione se l'utente è loggato.
Una classe statica Connection per l'accesso al Db direttamente nell'oggetto User non mi sembra inoltre una buona idea, mettila in un'altra classe di servizio per l'accesso al DB.
quando un utente si Logga metti in sessione l'oggetto User che contiene tutti i dati dell'utente (nome, cognome.. quello che vuoi, magari non la password)
....qui metti la logica per l'accesso DB e verifica login
...
.... se ok crea un nuovo oggetto User e mettici dentro le informazioni che tiri su dal DB
User user = new User();
user.setNome(....);
user.setCognome(....);
.....poi metti l'oggetto in sessione
request.getSession().setAttribute("utente",user);
..la scadenza della sessione la programmi nel web.xml dopo un certo tempo di inattività scade
<session-config>
<session-timeout>30</session-timeout>
</session-config>
questa scade dopo 30 minuti
per l'accesso alle pagine Sicure accessibili cioè solo se l'utente è loggato non devi far altro che controllare se l'oggetto User è in sessione. così
if (request.getSession().getAttribute("utente")!=null ) {
.....utente loggato vai avanti alla risorsa protetta
}
else {
..vai alla pagina errore
}
spero di averti chiarito qualcosa.
ho risposto a una tua domanda sul db sui gruppi google
anche se nn le ho mai viste so che le jsf non sono semplicissime .. ti consiglierei di avvicinarti prima alle jsp e ai concetti fondamentali della programmazione web J2EE.
ciao