Avatar billede tobiashm Nybegynder
17. juni 2003 - 14:20 Der er 7 kommentarer og
1 løsning

For mange URL connections

Jeg er løbet ind i problem med at have for mange connections til en server.

Jeg henter en række xml dokumenter via http request; opretter et URL objekt og bruger .openStream()

Kan man sørger for at genbruge den samme connection hver gang? Eller tvinge en connection til at lukke?
Avatar billede tobiashm Nybegynder
17. juni 2003 - 14:23 #1
Koden er lige nu noget ala:

for (int i=0; i < 100; i++) {
  url = new URL("http", host, request[i]);
  xmlreader.parse(new InputStream(url.openStream());
}
Avatar billede arne_v Ekspert
17. juni 2003 - 14:26 #2
HttpURLConnection har en disconnect metode.

Hvis du har erklæret objektet til at være en httpURLConnection så bare kald
den ellers så typecast til en HttpURLConnection og kald den.
Avatar billede jpvj Nybegynder
17. juni 2003 - 14:27 #3
Du kan vel lukke den igen, når du er færdig med at læse dokumentet ind?

Det må være noget i stil med utl.closeStream() ...

Ved ikke hvordan du tester om dokumentet er hentet eller ej.
Avatar billede arne_v Ekspert
17. juni 2003 - 14:29 #4
Det må så være:

URL url = new URL("http", host, request[i]);

URLConnection con = url.openConnection();

InputStream stm = con.getInputStream();

xmlreader.parse(stm);

((HttpURLConnection)con).disconnect();
Avatar billede tobiashm Nybegynder
17. juni 2003 - 14:45 #5
Ja, det må være noget med at lukke forbindelsen.

Det er måske slet ikke de mange efterfølgende requests der er problemet - de bruger vist samme connection, men nærmere reload af applet'en opretter en ny connection, og serveren kun vil kører maks 10 ad gange og beholder de gamle til de timer ud.

Så jeg skal nok sørge for at aktivt lukke forbindelsen når applet'en 'afsluttes' (for at blive genindlæst).
Avatar billede tobiashm Nybegynder
17. juni 2003 - 14:46 #6
Var det over hovedet til at forstå?
Avatar billede arne_v Ekspert
17. juni 2003 - 14:52 #7
Jeg hører dig sige at din applet laver keep-alive på connection, så
det kun er en connection i hver kørsel af applet, men at problemet
opstår når applet reloades og at den tilsyneladende ikke får lukket
connection.

Jeg synes stadigvæk at du skal prøve me dnoget ligende den kode jeg
skitserede.

Splitte openStream op i openConnection og getInputStream, så du
har et objekt du kan typecaste til HttpURLConnection og kalde
disconnect på.
Avatar billede tobiashm Nybegynder
18. juni 2003 - 01:51 #8
Er ikke helt sikker på at det virker ordentligt, men du får lige point...
(Det er lidt svært at checke, da jeg ikke har ordentlig adgang til serveren)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester