Newsgroup: it.comp.java
Titolo: Problema su aggiornamento Servlet (troppo frequente)

Salve a tutti.
Malrado programmi da diverso tempo in java, solo qualche mese fa ho 
sviluppato la mia prima Servlet. Grossomodo č un'area riservata con 
sessione.
Ciň che faccio al primo accesso (corretto) dell'utente č inserire in 
sessione la classe principale (con alcuni suoi dati) tramite 
session.setAttribute(chiave, classe) per poi riprenderlo (dalla 
sessione) ad ogni nuova pagina richiesta dall'utente.
Premetto che, siccome la classe č soggetta molto spesso a modifiche, ho 
impostato il ContexReload a true.
Sviluppando in locale ho notato che se la sessione esiste e l'oggetto 
prelevato dalla stessa č nullo, vuol dire che č stato effettuato un 
aggiornamento alla servlet: quindi rimando l'utente ad una pagina che 
gli comunica che c'č stato un aggiornamento e che č necessario inserire 
nuovamente i dati di accesso.
Sviluppata la mia Servlet, ho acquistato un hosting remoto sul quale 
l'ho uploadata e per il quale ho richiesto che venisse impostato anche 
lě il ContexReload a true.
Ed a questo punto sono sorti i problemi: ciň che accade č che mi esce 
molto spesso il messaggio "La servlet č stata aggiornata...reinserisci i 
tuoi dati. Dove, con molto spesso intendo (il piů delle volte) un tempo 
inferiore ai 10 minuti, visto che la sessione dura proprio 10 minuti 
(scaduti i quali dovrebbe uscire il messaggio "Sessione scaduta").
Inoltre altre volte mi compare il messaggio "Internal Server Error" che 
(presumo) non dipende dalla mia Servlet.
Sapete da cosa possono dipendere questi due problemi?
Grazie in anticipo,
Bye, Animanera.

Ciao, Animanera!
Il giorno 05/06/2004 alle ore 11:08 hai scritto:
 A> Sviluppando in locale ho notato che se la sessione esiste e l'oggetto
 A> prelevato dalla stessa č nullo, vuol dire che č stato effettuato un
 A> aggiornamento alla servlet:
La sessione esiste sempre perche' viene creata in automatico se usi
getSession() (senza parametri). Dovresti usare getSession(false) per sapere
se esiste una sessione valida o no. In questo caso puoi ragionevolmente
pensare che se l'oggetto non esiste nella sessione sia avvenuto un reload
del context (non so, a dire il vero, se con il reload vengono anche
eliminate le sessioni, mi sa di si).
 A> Ed a questo punto sono sorti i problemi: ciň che accade č che mi esce
 A> molto spesso il messaggio "La servlet č stata aggiornata...reinserisci i
 A> tuoi dati. Dove, con molto spesso intendo (il piů delle volte) un tempo
 A> inferiore ai 10 minuti, visto che la sessione dura proprio 10 minuti
 A> (scaduti i quali dovrebbe uscire il messaggio "Sessione scaduta").
A parte che 10 minuti mi sembrano veramente molto pochi (metterei minimo
30), dovresti reindirizzare verso una pagina di login "generica" senza
specificare che la servlet e' stata aggiornata (che gli importa all'utente
di questo ?) cosi' in sostanza non ha importanza il perche' la sessione non
sia piu' valida (spero che tu non aggiorni la servlet ogni 2 minuti) e
l'utente sa che se sta con le mani in mano per troppo tempo deve rifare il
login.
Ancora meglio sarebbe far gestire i login direttamente al server (cosi' ti
eviti queste verifiche sulla sessione).
 A> Inoltre altre volte mi compare il messaggio "Internal Server Error" che
 A> (presumo) non dipende dalla mia Servlet.
Dipende. Potrebbe essere un'eccezione causata da quello che la servlet fa.
Bye
-- 
There is no death; There is the Force.
http://www.maccasoft.com

 Dipende. Potrebbe essere un'eccezione causata da quello che la servlet fa.
Mmm, questo non credo perché se riaggiorno la pagina un minuto dopo mi 
esegue l'operazione senza problemi (e riprendendo la sessione!). Tra 
l'altro in quella schermata non mi compare nessuna eccezione. Come 
potrei vedere se realmente un'eccezione è stata generata dalla mia 
servlet? Ho provato dare un'occhiata ai file di log ma li trovo sempre 
vuoti (è l'hosting che non è buono, vero?)
Grazie, Bye, Animanera.