Newsgroup: it.comp.java
Titolo: Problema con HttpSession

Ciao,
ho un problema con una applicazione client server che vede come
"protagonisti" un applet e due servlets.
L'applicazione ha sempre funzionato correttamente, fino a quando ho deciso
di implementarci il concetto di mantenimento della sessione utilizzando sul
servlet destinato al login la classe HTTPSession.
Effettivamente ho visto che il mantenimento della sessione per quanto
riguarda il singolo servlet del login funziona egregiamente, ma i problemi
sorgono quando l'applet tenta di contattare il secondo (o comunque altri)
servlet, visto che non riesce a farlo e restituisce questo errore :
java.io.IOException : Server returned HTTP response code : 500 for URL
http://..........
Qualcuno sa dirmi qual'e' il problema e se possibile come risolverlo ?
Grazie 1000.
Matteo
--

ipotesi:
se dall'applet stai utilizzando java.net.URL la sessione non può essere
mantenuta: tale classe infatti non ha supporto per i cookies e ciò potrebbe
dare problemi. Dovresti implementare l'URL rewriting, oppure utilizzare una
classe URL che supporti i cookies, tipo HttpClient (cercalo su google).
Prima di fare ciò dovresti verificare che è proprio un problema di
mantenimento della sessione. x esempio stampando l'id di sessione dalle
servlet che stai utilizzando.
--
Luigi R. Viggiano
Programmatore Java. scjp, scwcd.
JUG Torino Member:
http://www.jugtorino.it

 servlet che stai utilizzando.
Intanto grazie per la risposta.
In effetti sto usando questo codice per la connessione con il servlet :
/--------------------------------------------------------------------------
-------------------/
try
{
   URL servletURL = new URL(loginServlet);
   // Apre una connessione con il servlet
   servletConnection = servletURL.openConnection();
   servletConnection.setDoInput(true);
   servletConnection.setDoOutput(true);
   servletConnection.setRequestProperty("Content-Type",
"application/octet-stream");
   toServletStream = new
ObjectOutputStream(servletConnection.getOutputStream());
   // Invia l'utente al servlet
   toServletStream.writeObject(utente);
   toServletStream.flush();
   // Invia la password al servlet
   toServletStream.writeObject(password);
   toServletStream.flush();
   toServletStream.close();
   fromServletStream = new
ObjectInputStream(servletConnection.getInputStream());
   setUser((Utente) fromServletStream.readObject());
   fromServletStream.close();
}
/--------------------------------------------------------------------------
-------------------/
Ovvero, l'applet di login invia utente e password al servlet.
Nel caso che questi siano vuoti il servlet controlla se c'e' una sessione
gia' attiva e in questo caso procede al login e ritorna all'applet le
informazioni sull'utente (oggetto Utente).
Ho fatto delle prove ed effettivamente all'applet torna l'utente corretto
anche dopo aver aggiornato la pagina html, quindi deduco che il
mantenimento della sessione in realta' funzioni ...
Solo che dopo aver ottenuto risposta dal servlet di Login, non riesce piu'
a chiamare gli altri servlet restituendo l'errore che indicavo nel primo
post :
/--------------------------------------------------------------------------
-------------------/
java.io.IOException : Server returned HTTP response code : 500 for URL
http://..........
/--------------------------------------------------------------------------
-------------------/
Qualche suggerimento ?
Grazie.
--
Matteo

 http://..........
Dovresti includere il full stacktrace: l'errore che tu indichi è quello che
il web server restituisce a fronte di *qualsiasi* errore (esempio
NullPointerException). In realtà non è utile per individuare l'errore nel
programma.

 ha scritto nel
messaggio news:newscache$4bh64h$d9$1...@listsrv01.csi.it...

Ecco qui lo stack :
/--------------------------------------------------------------------------
------------------------------------------/
Eccezione in ToQuery.getResults : java.io.IOException: Server returned HTTP
response code: 500 for URL: 
http://xxx.yyyyyyyyyyyy.it/servlets/Servlet1
java.io.IOException: Server returned HTTP response code: 500 for URL:
http://xxx.yyyyyyyyyyyy.it/servlets/Servlet1
 at sun.net.www.protocol.http.HttpURLConnection.getInputStream(Unknown
Source)
 at sun.plugin.net.protocol.http.HttpURLConnection.getInputStream(Unknown
Source)
 at xx.yyyyyyyyyyyy.wwwwww.zzzzzzzzz.ToQuery.getResults(ToQuery.java:156)
...
...
...
/--------------------------------------------------------------------------
------------------------------------------/
Sembra che non riesca ad ottenere lo stream di input dalla connessione
http, cosa che invece riesce a fare se nel servlet di login invalido la
sessione prima di rispondere all'applet... :O(
Matteo

Questo č l'errore che ti arriva sul client. Quello che devi indicarci č
l'eccezione che arriva sul server.
Luigi.