Newsgroup: it.comp.java
Titolo: JSP: openConnection/getResponseCode timeout ?

Ciao, ragassi.
Ho un "piccolo problemino" di timeout.
Nel codice di esempio qui sotto utilizzo un sito esterno per controllare 
se esiste un'immagine ad un certo url e, in caso esista, mi vado a 
prendere il link e lo inserisco come src della <image> della mia pagina 
jsp che sto generando.
Se per caso il sito "
http://site/link1
" o uno degli altri tre non 
risponde o c'e' qualche altra "rogna" sulla connessione *tutta* la 
generazione della mia pagina, ovviamente, si ferma ed aspetta.
La domanda da "OneMillionDollar" e': Esiste la possibilita' di inserire 
un timeout sulla openConnection() per potergli dire qualcosa del tipo 
"se la getResponseCode() non ritorna in 100ms lascia perdere" ?
_ _ _ _ _ _ _ _ _ _ _ O/_ _ _ _C_U_T_ _H_E_R_E_ _ _ _ _ _ _ _ _ _ _ _ _
                       O\
try {
    url1 = new URL("
http://site/link1
");
    http1 = (HttpURLConnection) url1.openConnection();
    if (http1.getResponseCode() == 200)
       LinkHaveImage1 = true;
    else {
       url2 = new URL("
http://site/link2
");
       http2 = (HttpURLConnection) url2.openConnection();
       if (http2.getResponseCode() == 200)
          LinkHaveImage2 = true;
       else {
          url3 = new URL("
http://site/link3
");
          http3 = (HttpURLConnection) url3.openConnection();
          if (http3.getResponseCode() == 200)
             LinkHaveImage3 = true;
       }
    }
} catch (Exception e) {
    // ...
}
_ _ _ _ _ _ _ _ _ _ _ O/_ _ _ _C_U_T_ _H_E_R_E_ _ _ _ _ _ _ _ _ _ _ _ _
                       O\
Bevuta gratis a chi trova la soluzione. :-)
Grassie...
--
Fulvio Mondini
DaniSoft Software
Po.Box 2, Chiari (BS) - Italy
Web Site: 
http://www.danisoft.com

Ciao, Fulvio!
Il giorno 23/03/2004 alle ore 12:39 hai scritto:
 FM> La domanda da "OneMillionDollar" e': Esiste la possibilita' di inserire
 FM> un timeout sulla openConnection() per potergli dire qualcosa del tipo
 FM> "se la getResponseCode() non ritorna in 100ms lascia perdere" ?
Questo potrebbe interessarti:
http://groups.google.it/groups?hl=it&lr=&ie=UTF-8&oe=UTF-8&threadm=uGg4Dow7%23GA.209%40cppssbbsa02.microsoft.com&rnum=5&prev=/groups%3Fq%3Durlconnection%2Btimeout%26ie%3DUTF-8%26oe%3DUTF-8%26hl%3Dit
Bye
-- 
Marco Maccaferri
MaccaSoft - 
http://www.maccasoft.com

 
http://groups.google.it/groups?hl=it&lr=&ie=UTF-8&oe=UTF-8&threadm=uGg4Dow7%23GA.209%40cppssbbsa02.microsoft.com&rnum=5&prev=/groups%3Fq%3Durlconnection%2Btimeout%26ie%3DUTF-8%26oe%3DUTF-8%26hl%3Dit
...ma se uso un thread parallelo nelle righe dopo, dove praticamente faccio:
_ _ _ _ _ _ _ _ _ _ _ O/_ _ _ _C_U_T_ _H_E_R_E_ _ _ _ _ _ _ _ _ _ _ _ _
                       O\
if (LinkHaveImage1)
    ImageLink = "<A HREF=...><IMG src=...></A>";
else
    if (LinkHaveImage2)
       ImageLink = "<A HREF=...";
    else
       if (LinkHaveImage3)
          ImageLink = "<A HREF=...";
       else
          ImageLink = "<A HREF=...>NO IMAGE FOUND</A>";
...
<TR>
    <TD class="TableCellWhite" align="center"><%=ImageLink%></TD>
...
_ _ _ _ _ _ _ _ _ _ _ O/_ _ _ _C_U_T_ _H_E_R_E_ _ _ _ _ _ _ _ _ _ _ _ _
                       O\
avro' sempre "no image found".
L'elaborazione deve essere sincrona... :-(


Ciao, Fulvio!
Il giorno 23/03/2004 alle ore 13:46 hai scritto:
 FM> avro' sempre "no image found".
 FM> L'elaborazione deve essere sincrona... :-(
Prima di verificare i vari LinkHaveImage devi aspettare che il thread
finisca o che vada in timeout, magari utilizzando il metodo wait nel thread
principale e il notifyAll quando il thread ha completato il suo lavoro. E'
sufficiente anche un loop che verifica, come nell'esempio, t.alive().
