Avatar billede mik28 Seniormester
08. februar 2008 - 11:50 Der er 21 kommentarer og
1 løsning

Java factory

Hvordan får jeg en timeout på hvis urlen ikke svarer

trae = factory.newDocumentBuilder().parse("URL");
Avatar billede mik28 Seniormester
08. februar 2008 - 12:40 #1
jeg skal kunne styre hvor lang tid jeg vil vente på at den svare. Hvor kan jeg se hvordan det hænger sammen
Avatar billede mik28 Seniormester
08. februar 2008 - 12:43 #2
Problemet er hvis den svare men er langsom
Avatar billede arne_v Ekspert
08. februar 2008 - 13:10 #3
Du kan prøve med:

System.setProperty( "sun.net.client.defaultConnectTimeout", "100");

jeg ved ikke om det virker i denne kontekst, men det er værd at prøve.
Avatar billede mik28 Seniormester
08. februar 2008 - 13:33 #4
Konteksten er

Document trae;
NodeList elementer;

try
  { 
      trae = factory.newDocumentBuilder().parse("url");   
      elementer    = XPathAPI.selectNodeList(trae, "");
                       
    for (int i = 0; i < elementer.getLength(); i++)
    {
    do whatever
    }
       
  } catch (Exception e) {
    Systen.out.print("FEJL: "+e);
  }
Avatar billede mik28 Seniormester
08. februar 2008 - 14:02 #5
Jeg kan faktisk ikke helt gennemskue om det overhovedet er et problem. Jeg kan se at hvis urlen ikke er "rigtig" så smiden den en exception som den skal. Jeg er bare bekymret over hvad der sker hvis den svare, men er for langsom
Avatar billede mik28 Seniormester
08. februar 2008 - 16:47 #6
Jeg håber virkelig der er en smart løsning på det :-) Ellers skal jeg vist til at skrive en hel del om, og det vil jeg helst ikke :-(
Avatar billede arne_v Ekspert
08. februar 2008 - 16:55 #7
Har du proevet med den linie jeg foreslog ?
Avatar billede mik28 Seniormester
08. februar 2008 - 18:46 #8
ja, men det så ikke ud til at virke. Slet ikke sagt at det så ikke gør det :-)
Avatar billede mik28 Seniormester
08. februar 2008 - 18:47 #9
Jeg er vist kommet til at oprette det her spørgsmål i den forkerte kategori. Burde have oprettet det under JSP
Avatar billede mik28 Seniormester
09. februar 2008 - 12:08 #10
Det skal forståes sådan her ikke.

try
  { 
      System.setProperty( "sun.net.client.defaultConnectTimeout", "100");
      trae = factory.newDocumentBuilder().parse("url");   
      elementer    = XPathAPI.selectNodeList(trae, "");
                       
    for (int i = 0; i < elementer.getLength(); i++)
    {
    do whatever
    }
       
  } catch (Exception e) {
    Systen.out.print("FEJL: "+e);
  }

Så dropper den forbindelsen efter 100 milisekunder ikke. Hvordan kan den vide det er forbindelsen til "url" den skal droppe, eller er det bar noget man skal sige sådan er det bare? På denne her side som i virkeligheden bare er en del af en anden side henter jeg xml fra 2 forskellige kilder. Kan jeg så i teorien så også sætte en System.setProperty( "sun.net.client.defaultConnectTimeout", "100"); inde i try'en på den (please sig JA)

try
  { 
      System.setProperty( "sun.net.client.defaultConnectTimeout", "100");
      trae = factory.newDocumentBuilder().parse("url");   
      elementer    = XPathAPI.selectNodeList(trae, "");
                       
    for (int i = 0; i < elementer.getLength(); i++)
    {
    do whatever
    }
       
  } catch (Exception e) {
    Systen.out.print("FEJL: "+e);
  }

try
  { 
      System.setProperty( "sun.net.client.defaultConnectTimeout", "150");
      trae = factory.newDocumentBuilder().parse("enandenurl");   
      elementer    = XPathAPI.selectNodeList(trae, "");
                       
    for (int i = 0; i < elementer.getLength(); i++)
    {
    do whatever
    }
       
  } catch (Exception e) {
    Systen.out.print("FEJL: "+e);
  }
Avatar billede mik28 Seniormester
09. februar 2008 - 12:12 #11
uha hvis jeg ikke kan sætte en timeout på så bliver jeg vist nød til at lave det hele om. Det er jeg sku ikke meget for. Så bliver det noget wsdl som henter xml som så bliver vist med noget ajax
Avatar billede arne_v Ekspert
09. februar 2008 - 21:33 #12
System.setProperty( "sun.net.client.defaultConnectTimeout", "100");

en enkelt gang bør gøre at alle udgående HTTP requests timer ud efter 100 millisekunder.
Avatar billede arne_v Ekspert
09. februar 2008 - 21:34 #13
Jeg tror såmænd at Java er den rigtige kategori. Problemet er generelt Java ikke
specikt JSP.
Avatar billede arne_v Ekspert
09. februar 2008 - 21:34 #14
Siger du at den ikke timer ud efter 100 ms ?
Avatar billede mik28 Seniormester
10. februar 2008 - 18:30 #15
Jeg ville forvente at hvis jeg skriver
System.setProperty( "sun.net.client.defaultConnectTimeout", "1");
så når den ikke at oprette forbindelsen, men det gør den
Avatar billede arne_v Ekspert
11. februar 2008 - 00:45 #16
Medmindre det er localhost, så burde den ikke kunne nå at oprette forbindelse.
Avatar billede mik28 Seniormester
11. februar 2008 - 06:17 #17
Det er ikke localhost og forbindelsen bliver oprettet. Meget mærkeligt
Avatar billede mik28 Seniormester
11. februar 2008 - 08:43 #18
Den timer ikke ud
Avatar billede mik28 Seniormester
11. februar 2008 - 09:32 #19
Er det her i princippet ikke rigtigt. Kan jeg mangle en jar og i så fald hvilken?

<%@ page import="org.apache.commons.httpclient.*" %>
HttpClient client = new HttpClient();
Avatar billede mik28 Seniormester
11. februar 2008 - 10:34 #20
Mit problem er lidt at den version jeg skal bruge er gammel og jeg har ikke mulighed for at opgradere den :-(

Manifest-Version: 1.0
Ant-Version: Apache Ant 1.5.3
Created-By: Apache Jakarta Maven
Built-By: michael
Package: org.apache.commons.httpclient
Build-Jdk: 1.2.2
Extension-Name: commons-httpclient
Specification-Version:
Specification-Vendor: Apache Software Foundation
Specification-Title: Jakarta Commons HttpClient
Implementation-Version: 2.0
Implementation-Vendor: Apache Software Foundation
Implementation-Vendor-Id:
Avatar billede mik28 Seniormester
11. februar 2008 - 10:39 #21
Det er i princippet det her jeg gerne vil, men det får jeg ikke lov til.

HttpClient client = new HttpClient();
httpclient.getParams().setParameter("http.socket.timeout", new Integer(1000));

GetMethod method = new GetMethod(authURL);
InputStream rstream = null;
rstream = method.getResponseBodyAsStream();
Document xmlresponse = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(rstream);
Avatar billede mik28 Seniormester
11. juli 2010 - 15:28 #22
lukker
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