IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

avec Java Discussion :

mettre un timer sur une méthode


Sujet :

avec Java

  1. #1
    Membre régulier

    Profil pro
    Inscrit en
    Mars 2009
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 83
    Points : 89
    Points
    89
    Par défaut mettre un timer sur une méthode
    Bonjour

    J'ai une application dans laquelle j'ai un bouton. Lorsque je clique sur ce bouton, j'utilise la méthode org.apache.commons.httpclient.methods.GetMethod pour récupérer des informations depuis un serveur et les afficher dans une liste.

    Mon problème est que si l'adresse ip du serveur n'est pas bonne, l'application freeze. Comment faire pour que si l'adresse ip est mauvaise, l'appel à la méthode GetMethod s'arrête et un message d'erreur est affiché ?

    J'ai pensé utiliser un timer mais je n'y arrive pas :/ Je ne sais pas trop comment ça fonctionne.

    Merci pour l'aide que vous pourrez m'apporter

  2. #2
    Invité
    Invité(e)
    Par défaut
    Salut,

    ton problème de freeze vient surement du fait que tu exécutes la méthode dans L'EDT. Regarde cet article : http://gfx.developpez.com/tutoriel/j...ing-threading/ ça t'aidera à le corriger
    Pour ce qui est du temps d'attente, tu dois pouvoir régler le timeout lors de l'instantiation de HttpClient

    A plus

  3. #3
    Membre régulier

    Profil pro
    Inscrit en
    Mars 2009
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 83
    Points : 89
    Points
    89
    Par défaut
    Bonjour et merci pour ces conseils. En réalité, le fait que le bouton reste figé ne me dérange pas tellement. C'est plutôt que l'application ne répond plus (il y a écrit "ne réponds pas" dans le titre de l'application) si la méthode httpclient.GetMethod ne se termine pas.

    J'ai essayé de paramétrer un timeout en faisant comme suit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    GetMethod method = new GetMethod("http://" + ipserver + "/ProjectManager?parameter=" + parameter);
     
    method.getParams().setSoTimeout(3000);
    HttpClient httpclient = new HttpClient();
    httpclient.getParams().setSoTimeout(3000);
    httpclient.executeMethod(method);
    mais ça ne change rien au freeze de l'application :/ En passant en mode debug, je remarque qu'après les 3 secondes du timeout, le curseur ne passe pas à la ligne de code suivante pour autant.

    J'ai quand même essayé en suivant l'article que tu m'as proposé. Je ne sais pas si j'ai bien fait ou non mais le résultat était que le bouton ne se figeait plus, mais il ne se passait plus rien d'autre (pas de shell qui apparait avec la liste des données récupérées).

    Je précise par ailleurs que je n'utilise pas swing mais swt Du coup, le code de l'article n'est peut être pas adapté.

  4. #4
    Invité
    Invité(e)
    Par défaut
    Je suis allé un peu vite en supposant que tu utilises Swing Ceci dit le même problème existe avec SWT (méthodes syncExec et asyncExec il me semble).
    Pour ton Timeout, tu ne devrais pas utiliser setConnectionTimeout ?

  5. #5
    Membre régulier

    Profil pro
    Inscrit en
    Mars 2009
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 83
    Points : 89
    Points
    89
    Par défaut
    Si, c'est ce que j'ai voulu faire en premier mais httpclient.GetMethod requiert un objet de type HttpMethodParams pour sa méthode setParams(HttpMethodParams params);

    Or le setConnectionTimeout est une méthode de la classe HttpConnectionParams :/ Alors il y a peut être un moyen de passer outre mais j'avoue que j'ai un peu de mal avec toutes ces classes qui se ressemblent v_v

  6. #6
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par p1xl_01 Voir le message
    Si, c'est ce que j'ai voulu faire en premier mais httpclient.GetMethod requiert un objet de type HttpMethodParams pour sa méthode setParams(HttpMethodParams params);

    Or le setConnectionTimeout est une méthode de la classe HttpConnectionParams :/ Alors il y a peut être un moyen de passer outre mais j'avoue que j'ai un peu de mal avec toutes ces classes qui se ressemblent v_v
    D'après la javadoc, quand tu as ton HttpClient, tu appelles getHttpConnectionManager et le résultat possède la méthode setConnectionTimeout. Tu as tenté ?

  7. #7
    Membre régulier

    Profil pro
    Inscrit en
    Mars 2009
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 83
    Points : 89
    Points
    89
    Par défaut
    J'ai essayé, ça fonctionne bien J'ai mis un timeout de 7 secondes et ça ne freeze plus. Merci beaucoup pour ton aide

    Je mets la ligne de code complète au cas ou :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    httpclient.getHttpConnectionManager().getParams().setConnectionTimeout(7000);

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Mettre un intercepteur sur une méthode n'appartenant pas à l'EJB
    Par Monte-Cristo dans le forum Wildfly/JBoss
    Réponses: 5
    Dernier message: 17/06/2013, 17h22
  2. [ActiveX] Retour de BSTR sur une méthode externe
    Par mr.saucisse dans le forum MFC
    Réponses: 28
    Dernier message: 11/01/2006, 15h47
  3. Mettre du texte sur une vidéo(ou par dessus un tmediaplayer)
    Par souch dans le forum Composants VCL
    Réponses: 9
    Dernier message: 08/07/2004, 13h30
  4. Réponses: 3
    Dernier message: 16/04/2004, 16h51
  5. Comment mettre un label sur une image
    Par dug dans le forum MFC
    Réponses: 3
    Dernier message: 07/04/2004, 10h40

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo