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

Java Discussion :

Plantage au bout d'un moment


Sujet :

Java

  1. #21
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 45
    Par défaut
    Citation Envoyé par nouknouk Voir le message
    je me trompe peut-être mais il me paraît normal que tous les thread soient en RUNNABLE dans ton log puisque le log représente ce qui se passe avant le bloquage.
    Oui, mais dans le débugeur aussi ils sont tous en RUNNABLE.


    Je test avec ton code (que j'ai mit dans le construteur de RomuServer), par contre la ligne t.dumpStack(); faisait planter donc je l'ai désactivée.
    java.lang.Exception: Stack trace
    at java.lang.Thread.dumpStack(Unknown Source)
    at RomuServer$1.actionPerformed(RomuServer.java:163)
    at javax.swing.Timer.fireActionPerformed(Unknown Source)
    at javax.swing.Timer$DoPostEvent.run(Unknown Source)
    at java.awt.event.InvocationEvent.dispatch(Unknown Source)
    at java.awt.EventQueue.dispatchEvent(Unknown Source)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
    at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.awt.EventDispatchThread.run(Unknown Source)

    Edit:ouais y a des bien des thread en Blocked quand ça plante
    thread Thread[AquaClientThread : 2,5,main] found in state BLOCKED
    thread Thread[AquaClientThread : 4,5,main] found in state BLOCKED
    thread Thread[AquaClientThread : 19,5,main] found in state BLOCKED
    thread Thread[AquaClientThread : 29,5,main] found in state BLOCKED
    thread Thread[AquaClientThread : 39,5,main] found in state BLOCKED
    thread Thread[AquaClientThread : 42,5,main] found in state BLOCKED
    thread Thread[AquaClientThread : 44,5,main] found in state BLOCKED
    thread Thread[AquaClientThread : 49,5,main] found in state BLOCKED
    thread Thread[AquaClientThread : 54,5,main] found in state BLOCKED
    thread Thread[AquaClientThread : 2,5,main] found in state BLOCKED
    thread Thread[AquaClientThread : 4,5,main] found in state BLOCKED
    thread Thread[AquaClientThread : 19,5,main] found in state BLOCKED
    thread Thread[AquaClientThread : 29,5,main] found in state BLOCKED
    thread Thread[AquaClientThread : 39,5,main] found in state BLOCKED
    thread Thread[AquaClientThread : 42,5,main] found in state BLOCKED
    thread Thread[AquaClientThread : 44,5,main] found in state BLOCKED
    thread Thread[AquaClientThread : 49,5,main] found in state BLOCKED
    thread Thread[AquaClientThread : 54,5,main] found in state BLOCKED
    Wed Apr 29 13:09:07 GMT 2009 | T:main | News AquaClientThread : 85 ip:86.221.76.243
    Wed Apr 29 13:09:07 GMT 2009 | T:AquaClientThread : 85 | policy
    Wed Apr 29 13:09:07 GMT 2009 | T:AquaClientThread : 85 | End AquaClientThread : 85
    thread Thread[AquaClientThread : 2,5,main] found in state BLOCKED
    thread Thread[AquaClientThread : 4,5,main] found in state BLOCKED
    thread Thread[AquaClientThread : 19,5,main] found in state BLOCKED
    thread Thread[AquaClientThread : 29,5,main] found in state BLOCKED
    thread Thread[AquaClientThread : 39,5,main] found in state BLOCKED
    thread Thread[AquaClientThread : 42,5,main] found in state BLOCKED
    thread Thread[AquaClientThread : 44,5,main] found in state BLOCKED
    thread Thread[AquaClientThread : 49,5,main] found in state BLOCKED
    thread Thread[AquaClientThread : 54,5,main] found in state BLOCKED
    Wed Apr 29 13:09:07 GMT 2009 | T:main | News AquaClientThread : 86 ip:86.221.76.243
    thread Thread[AquaClientThread : 2,5,main] found in state BLOCKED
    thread Thread[AquaClientThread : 4,5,main] found in state BLOCKED
    thread Thread[AquaClientThread : 19,5,main] found in state BLOCKED
    thread Thread[AquaClientThread : 29,5,main] found in state BLOCKED
    thread Thread[AquaClientThread : 39,5,main] found in state BLOCKED
    thread Thread[AquaClientThread : 42,5,main] found in state BLOCKED
    thread Thread[AquaClientThread : 44,5,main] found in state BLOCKED
    thread Thread[AquaClientThread : 49,5,main] found in state BLOCKED
    thread Thread[AquaClientThread : 54,5,main] found in state BLOCKED
    thread Thread[AquaClientThread : 2,5,main] found in state BLOCKED
    thread Thread[AquaClientThread : 4,5,main] found in state BLOCKED
    thread Thread[AquaClientThread : 19,5,main] found in state BLOCKED
    thread Thread[AquaClientThread : 29,5,main] found in state BLOCKED
    thread Thread[AquaClientThread : 39,5,main] found in state BLOCKED
    thread Thread[AquaClientThread : 42,5,main] found in state BLOCKED
    thread Thread[AquaClientThread : 44,5,main] found in state BLOCKED
    thread Thread[AquaClientThread : 49,5,main] found in state BLOCKED
    thread Thread[AquaClientThread : 54,5,main] found in state BLOCKED
    thread Thread[AquaClientThread : 2,5,main] found in state BLOCKED
    thread Thread[AquaClientThread : 4,5,main] found in state BLOCKED
    thread Thread[AquaClientThread : 19,5,main] found in state BLOCKED
    thread Thread[AquaClientThread : 29,5,main] found in state BLOCKED
    thread Thread[AquaClientThread : 39,5,main] found in state BLOCKED
    thread Thread[AquaClientThread : 42,5,main] found in state BLOCKED
    thread Thread[AquaClientThread : 44,5,main] found in state BLOCKED
    thread Thread[AquaClientThread : 49,5,main] found in state BLOCKED
    thread Thread[AquaClientThread : 54,5,main] found in state BLOCKED
    Je vais refaire un test en enregistrant tout les print dans un fichier.

  2. #22
    Modérateur
    Avatar de nouknouk
    Homme Profil pro
    Inscrit en
    Décembre 2006
    Messages
    1 655
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 655
    Par défaut
    Citation Envoyé par Thixomag Voir le message
    la ligne t.dumpStack(); faisait planter donc je l'ai désactivée.
    [...]
    Je vais refaire un test en enregistrant tout les print dans un fichier.
    Fais surtout un test en enregistrant toutes les stackTrace

    si dumpStack ne fonctionne pas, tu peux toujours itérer sur chaque élément du tableau retourné par Thread.getStackTrace()

  3. #23
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 45
    Par défaut
    un echo(t.getStackTrace().toString());
    donne des trucs du genre :
    Wed Apr 29 15:36:19 CEST 2009 | T:AWT-EventQueue-0 | [Ljava.lang.StackTraceElement;@c9ba38
    Ça va ?

  4. #24
    Modérateur
    Avatar de nouknouk
    Homme Profil pro
    Inscrit en
    Décembre 2006
    Messages
    1 655
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 655
    Par défaut
    Non, c'est pas vraiment idéal.
    L'idée est de pouvoir retrouver l'endroit précis du code sur lequel le thread est bloqué.

    Un truc dans ce style serait plus approprié:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    StackTraceElement[] elements = t.getStackTrace();
    for (int i=0; i<elements.length; ++i) {
        StackTraceElement e = elements[i]; 
        System.out.println(e.getClassName()+":"+e.getMethodName()+" ("+e.getFileName()+" line "+e.getLineNumber()+")");
    }

  5. #25
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 45
    Par défaut
    Merci beaucoup pour le code.

    Bon alors quand les threads sont en RUNNABLE, j'ai du :
    Thu Apr 30 16:11:08 GMT 2009 | T:AWT-EventQueue-0 | stackTrace :
    Thu Apr 30 16:11:08 GMT 2009 | T:AWT-EventQueue-0 | java.net.SocketInputStream:socketRead0 (SocketInputStream.java line -2)
    Thu Apr 30 16:11:08 GMT 2009 | T:AWT-EventQueue-0 | java.net.SocketInputStream:read (SocketInputStream.java line 129)
    Thu Apr 30 16:11:08 GMT 2009 | T:AWT-EventQueue-0 | sun.nio.cs.StreamDecoder:readBytes (StreamDecoder.java line 264)
    Thu Apr 30 16:11:08 GMT 2009 | T:AWT-EventQueue-0 | sun.nio.cs.StreamDecoder:implRead (StreamDecoder.java line 306)
    Thu Apr 30 16:11:08 GMT 2009 | T:AWT-EventQueue-0 | sun.nio.cs.StreamDecoder:read (StreamDecoder.java line 158)
    Thu Apr 30 16:11:08 GMT 2009 | T:AWT-EventQueue-0 | java.io.InputStreamReader:read (InputStreamReader.java line 167)
    Thu Apr 30 16:11:08 GMT 2009 | T:AWT-EventQueue-0 | java.io.BufferedReader:fill (BufferedReader.java line 136)
    Thu Apr 30 16:11:08 GMT 2009 | T:AWT-EventQueue-0 | java.io.BufferedReader:read1 (BufferedReader.java line 187)
    Thu Apr 30 16:11:08 GMT 2009 | T:AWT-EventQueue-0 | java.io.BufferedReader:read (BufferedReader.java line 261)
    Thu Apr 30 16:11:08 GMT 2009 | T:AWT-EventQueue-0 | AquaClientThread:run (AquaClientThread.java line 99)

    Effectivement quand le problème survient, j'ai un thread qui passe en BLOCKED indéfiniment, puis d'autres le deviennent aussi après quelques secondes :
    Thu Apr 30 16:49:48 GMT 2009 | T:AquaClientThread : 19 | doAction REMOVE : NIOCOBOQ
    Thu Apr 30 16:49:48 GMT 2009 | T:AquaClientThread : 19 | listClientsXml +
    Thu Apr 30 16:49:48 GMT 2009 | T:AquaClientThread : 19 | listClientsXml -
    Thu Apr 30 16:49:48 GMT 2009 | T:AquaClientThread : 19 | sendToAllClients +
    Thu Apr 30 16:49:48 GMT 2009 | T:AquaClientThread : 19 | SEND etat:RUNNABLE sur:AquaClientThread : 3 lastId:41
    Thu Apr 30 16:49:48 GMT 2009 | T:AquaClientThread : 19 | SEND etat:RUNNABLE sur:AquaClientThread : 5 lastId:41
    Thu Apr 30 16:49:48 GMT 2009 | T:AquaClientThread : 19 | SEND etat:RUNNABLE sur:AquaClientThread : 6 lastId:41
    Thu Apr 30 16:49:48 GMT 2009 | T:AquaClientThread : 19 | SEND etat:RUNNABLE sur:AquaClientThread : 9 lastId:41
    Thu Apr 30 16:49:48 GMT 2009 | T:AquaClientThread : 19 | SEND etat:RUNNABLE sur:AquaClientThread : 10 lastId:41
    Thu Apr 30 16:49:48 GMT 2009 | T:AquaClientThread : 19 | SEND etat:RUNNABLE sur:AquaClientThread : 14 lastId:41
    Thu Apr 30 16:49:48 GMT 2009 | T:AquaClientThread : 19 | SEND etat:RUNNABLE sur:AquaClientThread : 16 lastId:41
    Thu Apr 30 16:49:48 GMT 2009 | T:AquaClientThread : 19 | SEND etat:RUNNABLE sur:AquaClientThread : 17 lastId:41
    Thu Apr 30 16:49:48 GMT 2009 | T:AquaClientThread : 19 | SEND etat:RUNNABLE sur:AquaClientThread : 18 lastId:41
    Thu Apr 30 16:49:48 GMT 2009 | T:AquaClientThread : 19 | SEND etat:RUNNABLE sur:AquaClientThread : 20 lastId:41
    Thu Apr 30 16:49:48 GMT 2009 | T:AquaClientThread : 19 | SEND etat:RUNNABLE sur:AquaClientThread : 22 lastId:41
    Thu Apr 30 16:49:48 GMT 2009 | T:AquaClientThread : 19 | SEND etat:RUNNABLE sur:AquaClientThread : 23 lastId:41
    Thu Apr 30 16:49:48 GMT 2009 | T:AquaClientThread : 19 | SEND etat:RUNNABLE sur:AquaClientThread : 28 lastId:41
    Thu Apr 30 16:49:48 GMT 2009 | T:AquaClientThread : 19 | SEND etat:RUNNABLE sur:AquaClientThread : 30 lastId:41
    Thu Apr 30 16:49:48 GMT 2009 | T:AquaClientThread : 19 | SEND etat:RUNNABLE sur:AquaClientThread : 31 lastId:41
    Thu Apr 30 16:49:48 GMT 2009 | T:AquaClientThread : 19 | SEND etat:RUNNABLE sur:AquaClientThread : 32 lastId:41
    Thu Apr 30 16:49:54 GMT 2009 | T:AWT-EventQueue-0 | thread
    // Faut remarquer quand même que c'est après 6 sec:
    Thread[AquaClientThread : 6,5,main] found in state BLOCKED
    Thu Apr 30 16:49:54 GMT 2009 | T:AWT-EventQueue-0 | stackTrace :
    Thu Apr 30 16:49:54 GMT 2009 | T:AWT-EventQueue-0 | RomuServer:doAction (RomuServer.java line 519)
    Thu Apr 30 16:49:54 GMT 2009 | T:AWT-EventQueue-0 | AquaClientThread:ParseXml (AquaClientThread.java line 552)
    Thu Apr 30 16:49:54 GMT 2009 | T:AWT-EventQueue-0 | AquaClientThread:run (AquaClientThread.java line 113)
    Thu Apr 30 16:49:55 GMT 2009 | T:AWT-EventQueue-0 | thread Thread[AquaClientThread : 6,5,main] found in state BLOCKED
    Thu Apr 30 16:49:55 GMT 2009 | T:AWT-EventQueue-0 | stackTrace :
    Thu Apr 30 16:49:55 GMT 2009 | T:AWT-EventQueue-0 | RomuServer:doAction (RomuServer.java line 519)
    Thu Apr 30 16:49:55 GMT 2009 | T:AWT-EventQueue-0 | AquaClientThread:ParseXml (AquaClientThread.java line 552)
    Thu Apr 30 16:49:55 GMT 2009 | T:AWT-EventQueue-0 | AquaClientThread:run (AquaClientThread.java line 113)
    Thu Apr 30 16:49:55 GMT 2009 | T:main | News AquaClientThread : 42 ip:82.253.228.12
    Thu Apr 30 16:49:56 GMT 2009 | T:AWT-EventQueue-0 | thread Thread[AquaClientThread : 6,5,main] found in state BLOCKED
    Thu Apr 30 16:49:56 GMT 2009 | T:AWT-EventQueue-0 | stackTrace :
    Thu Apr 30 16:49:56 GMT 2009 | T:AWT-EventQueue-0 | RomuServer:doAction (RomuServer.java line 519)
    Thu Apr 30 16:49:56 GMT 2009 | T:AWT-EventQueue-0 | AquaClientThread:ParseXml (AquaClientThread.java line 552)
    Thu Apr 30 16:49:56 GMT 2009 | T:AWT-EventQueue-0 | AquaClientThread:run (AquaClientThread.java line 113)
    Thu Apr 30 16:49:56 GMT 2009 | T:AWT-EventQueue-0 | thread Thread[AquaClientThread : 39,5,main] found in state BLOCKED
    Thu Apr 30 16:49:56 GMT 2009 | T:AWT-EventQueue-0 | stackTrace :
    Thu Apr 30 16:49:56 GMT 2009 | T:AWT-EventQueue-0 | RomuServer:doAction (RomuServer.java line 519)
    Thu Apr 30 16:49:56 GMT 2009 | T:AWT-EventQueue-0 | AquaClientThread:ParseXml (AquaClientThread.java line 552)
    Thu Apr 30 16:49:56 GMT 2009 | T:AWT-EventQueue-0 | AquaClientThread:run (AquaClientThread.java line 113)
    Thu Apr 30 16:49:57 GMT 2009 | T:AWT-EventQueue-0 | thread Thread[AquaClientThread : 6,5,main] found in state BLOCKED
    Thu Apr 30 16:49:57 GMT 2009 | T:AWT-EventQueue-0 | stackTrace :
    Thu Apr 30 16:49:57 GMT 2009 | T:AWT-EventQueue-0 | RomuServer:doAction (RomuServer.java line 519)
    Thu Apr 30 16:49:57 GMT 2009 | T:AWT-EventQueue-0 | AquaClientThread:ParseXml (AquaClientThread.java line 552)
    Thu Apr 30 16:49:57 GMT 2009 | T:AWT-EventQueue-0 | AquaClientThread:run (AquaClientThread.java line 113)
    Thu Apr 30 16:49:57 GMT 2009 | T:AWT-EventQueue-0 | thread Thread[AquaClientThread : 39,5,main] found in state BLOCKED
    Thu Apr 30 16:49:57 GMT 2009 | T:AWT-EventQueue-0 | stackTrace :
    Thu Apr 30 16:49:57 GMT 2009 | T:AWT-EventQueue-0 | RomuServer:doAction (RomuServer.java line 519)
    Thu Apr 30 16:49:57 GMT 2009 | T:AWT-EventQueue-0 | AquaClientThread:ParseXml (AquaClientThread.java line 552)
    Thu Apr 30 16:49:57 GMT 2009 | T:AWT-EventQueue-0 | AquaClientThread:run (AquaClientThread.java line 113)
    Thu Apr 30 16:49:58 GMT 2009 | T:AWT-EventQueue-0 | thread Thread[AquaClientThread : 6,5,main] found in state BLOCKED
    Thu Apr 30 16:49:58 GMT 2009 | T:AWT-EventQueue-0 | stackTrace :
    Thu Apr 30 16:49:58 GMT 2009 | T:AWT-EventQueue-0 | RomuServer:doAction (RomuServer.java line 519)
    Thu Apr 30 16:49:58 GMT 2009 | T:AWT-EventQueue-0 | AquaClientThread:ParseXml (AquaClientThread.java line 552)
    Thu Apr 30 16:49:58 GMT 2009 | T:AWT-EventQueue-0 | AquaClientThread:run (AquaClientThread.java line 113)
    Thu Apr 30 16:49:58 GMT 2009 | T:AWT-EventQueue-0 | thread Thread[AquaClientThread : 39,5,main] found in state BLOCKED
    Thu Apr 30 16:49:58 GMT 2009 | T:AWT-EventQueue-0 | stackTrace :
    Thu Apr 30 16:49:58 GMT 2009 | T:AWT-EventQueue-0 | RomuServer:doAction (RomuServer.java line 519)
    Thu Apr 30 16:49:58 GMT 2009 | T:AWT-EventQueue-0 | AquaClientThread:ParseXml (AquaClientThread.java line 552)
    Thu Apr 30 16:49:58 GMT 2009 | T:AWT-EventQueue-0 | AquaClientThread:run (AquaClientThread.java line 113)
    Thu Apr 30 16:49:59 GMT 2009 | T:AWT-EventQueue-0 | thread Thread[AquaClientThread : 6,5,main] found in state BLOCKED
    Thu Apr 30 16:49:59 GMT 2009 | T:AWT-EventQueue-0 | stackTrace :
    Thu Apr 30 16:49:59 GMT 2009 | T:AWT-EventQueue-0 | RomuServer:doAction (RomuServer.java line 519)
    Thu Apr 30 16:49:59 GMT 2009 | T:AWT-EventQueue-0 | AquaClientThread:ParseXml (AquaClientThread.java line 552)
    Thu Apr 30 16:49:59 GMT 2009 | T:AWT-EventQueue-0 | AquaClientThread:run (AquaClientThread.java line 113)
    Thu Apr 30 16:49:59 GMT 2009 | T:AWT-EventQueue-0 | thread Thread[AquaClientThread : 16,5,main] found in state BLOCKED
    Thu Apr 30 16:49:59 GMT 2009 | T:AWT-EventQueue-0 | stackTrace :
    Thu Apr 30 16:49:59 GMT 2009 | T:AWT-EventQueue-0 | RomuServer:doAction (RomuServer.java line 519)
    Thu Apr 30 16:49:59 GMT 2009 | T:AWT-EventQueue-0 | AquaClientThread:ParseXml (AquaClientThread.java line 552)
    Thu Apr 30 16:49:59 GMT 2009 | T:AWT-EventQueue-0 | AquaClientThread:run (AquaClientThread.java line 113)
    Thu Apr 30 16:49:59 GMT 2009 | T:AWT-EventQueue-0 | thread Thread[AquaClientThread : 39,5,main] found in state BLOCKED
    Thu Apr 30 16:49:59 GMT 2009 | T:AWT-EventQueue-0 | stackTrace :
    Thu Apr 30 16:49:59 GMT 2009 | T:AWT-EventQueue-0 | RomuServer:doAction (RomuServer.java line 519)
    Thu Apr 30 16:49:59 GMT 2009 | T:AWT-EventQueue-0 | AquaClientThread:ParseXml (AquaClientThread.java line 552)
    Thu Apr 30 16:49:59 GMT 2009 | T:AWT-EventQueue-0 | AquaClientThread:run (AquaClientThread.java line 113)
    Thu Apr 30 16:50:00 GMT 2009 | T:AWT-EventQueue-0 | thread Thread[AquaClientThread : 6,5,main] found in state BLOCKED
    Thu Apr 30 16:50:00 GMT 2009 | T:AWT-EventQueue-0 | stackTrace :
    Thu Apr 30 16:50:00 GMT 2009 | T:AWT-EventQueue-0 | RomuServer:doAction (RomuServer.java line 519)
    Thu Apr 30 16:50:00 GMT 2009 | T:AWT-EventQueue-0 | AquaClientThread:ParseXml (AquaClientThread.java line 552)
    Thu Apr 30 16:50:00 GMT 2009 | T:AWT-EventQueue-0 | AquaClientThread:run (AquaClientThread.java line 113)
    Thu Apr 30 16:50:00 GMT 2009 | T:AWT-EventQueue-0 | thread Thread[AquaClientThread : 16,5,main] found in state BLOCKED
    Thu Apr 30 16:50:00 GMT 2009 | T:AWT-EventQueue-0 | stackTrace :
    Thu Apr 30 16:50:00 GMT 2009 | T:AWT-EventQueue-0 | RomuServer:doAction (RomuServer.java line 519)
    Thu Apr 30 16:50:00 GMT 2009 | T:AWT-EventQueue-0 | AquaClientThread:ParseXml (AquaClientThread.java line 552)
    Thu Apr 30 16:50:00 GMT 2009 | T:AWT-EventQueue-0 | AquaClientThread:run (AquaClientThread.java line 113)
    Thu Apr 30 16:50:00 GMT 2009 | T:AWT-EventQueue-0 | thread Thread[AquaClientThread : 39,5,main] found in state BLOCKED
    Thu Apr 30 16:50:00 GMT 2009 | T:AWT-EventQueue-0 | stackTrace :
    Thu Apr 30 16:50:00 GMT 2009 | T:AWT-EventQueue-0 | RomuServer:doAction (RomuServer.java line 519)
    Thu Apr 30 16:50:00 GMT 2009 | T:AWT-EventQueue-0 | AquaClientThread:ParseXml (AquaClientThread.java line 552)
    Thu Apr 30 16:50:00 GMT 2009 | T:AWT-EventQueue-0 | AquaClientThread:run (AquaClientThread.java line 113)
    Thu Apr 30 16:50:01 GMT 2009 | T:AWT-EventQueue-0 | thread Thread[AquaClientThread : 6,5,main] found in state BLOCKED
    Thu Apr 30 16:50:01 GMT 2009 | T:AWT-EventQueue-0 | stackTrace :
    Thu Apr 30 16:50:01 GMT 2009 | T:AWT-EventQueue-0 | RomuServer:doAction (RomuServer.java line 519)
    Thu Apr 30 16:50:01 GMT 2009 | T:AWT-EventQueue-0 | AquaClientThread:ParseXml (AquaClientThread.java line 552)
    Thu Apr 30 16:50:01 GMT 2009 | T:AWT-EventQueue-0 | AquaClientThread:run (AquaClientThread.java line 113)
    Thu Apr 30 16:50:01 GMT 2009 | T:AWT-EventQueue-0 | thread Thread[AquaClientThread : 16,5,main] found in state BLOCKED
    Thu Apr 30 16:50:01 GMT 2009 | T:AWT-EventQueue-0 | stackTrace :
    Thu Apr 30 16:50:01 GMT 2009 | T:AWT-EventQueue-0 | RomuServer:doAction (RomuServer.java line 519)
    Thu Apr 30 16:50:01 GMT 2009 | T:AWT-EventQueue-0 | AquaClientThread:ParseXml (AquaClientThread.java line 552)
    Thu Apr 30 16:50:01 GMT 2009 | T:AWT-EventQueue-0 | AquaClientThread:run (AquaClientThread.java line 113)
    Thu Apr 30 16:50:01 GMT 2009 | T:AWT-EventQueue-0 | thread Thread[AquaClientThread : 39,5,main] found in state BLOCKED
    Thu Apr 30 16:50:01 GMT 2009 | T:AWT-EventQueue-0 | stackTrace :
    Thu Apr 30 16:50:01 GMT 2009 | T:AWT-EventQueue-0 | RomuServer:doAction (RomuServer.java line 519)
    Thu Apr 30 16:50:01 GMT 2009 | T:AWT-EventQueue-0 | AquaClientThread:ParseXml (AquaClientThread.java line 552)
    Thu Apr 30 16:50:01 GMT 2009 | T:AWT-EventQueue-0 | AquaClientThread:run (AquaClientThread.java line 113)
    RomuServer:doAction (RomuServer.java line 519)
    -> public synchronized void doAction(String action, AquaClientThread client, String message){

    AquaClientThread:ParseXml (AquaClientThread.java line 552)
    ->RomuServer.doAction("message",this,Msg);

    AquaClientThread:run (AquaClientThread.java line 113)
    ->ParseXml(inputLine);


    Edit autre exemple :
    Thu Apr 30 17:50:00 GMT 2009 | T:AquaClientThread : 58 | End AquaClientThread : 58
    Thu Apr 30 17:50:00 GMT 2009 | T:AWT-EventQueue-0 | thread Thread[AquaClientThread : 58,5,main] found in state BLOCKED
    Thu Apr 30 17:50:00 GMT 2009 | T:AWT-EventQueue-0 | stackTrace :
    Thu Apr 30 17:50:00 GMT 2009 | T:AWT-EventQueue-0 | RomuServer:doAction (RomuServer.java line 519)
    Thu Apr 30 17:50:00 GMT 2009 | T:AWT-EventQueue-0 | AquaClientThread:run (AquaClientThread.java line 128)

  6. #26
    Modérateur
    Avatar de nouknouk
    Homme Profil pro
    Inscrit en
    Décembre 2006
    Messages
    1 655
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 655
    Par défaut
    tu as visiblement un interbloquage dans une partie de ton code que tu ne nous as pas présentée.
    Je pense que tant qu'on n'aura pas une vue sur l'intégralité de ton code, on ne pourra pas aider.

  7. #27
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 45
    Par défaut
    J'ai rajouté les exceptions dans le log et j'ai trouvé un truc intéressant :
    Sat May 02 12:54:20 GMT 2009 | T:AquaClientThread : 52 | Excep1:Connection reset
    Sat May 02 12:54:21 GMT 2009 | T:AWT-EventQueue-0 | thread Thread[AquaClientThread : 52,5,main] found in state BLOCKED
    Sat May 02 12:54:21 GMT 2009 | T:AWT-EventQueue-0 | stackTrace :
    Sat May 02 12:54:21 GMT 2009 | T:AWT-EventQueue-0 | - RomuServer:doAction (RomuServer.java line 531)
    Sat May 02 12:54:21 GMT 2009 | T:AWT-EventQueue-0 | - AquaClientThread:run (AquaClientThread.java line 162)
    Mais des fois j'ai des "Connection reset" pour les quelles tout ce passe bien, par exemple :
    Sat May 02 12:05:44 GMT 2009 | T:AquaClientThread : 5 | Excep1:Connection reset
    Sat May 02 12:05:44 GMT 2009 | T:AquaClientThread : 5 |
    Sat May 02 12:05:44 GMT 2009 | T:AquaClientThread : 5 | doAction REMOVE : LGW_LEGENDARY
    Sat May 02 12:05:44 GMT 2009 | T:AquaClientThread : 5 | listClientsXml +
    Sat May 02 12:05:44 GMT 2009 | T:AquaClientThread : 5 | listClientsXml -
    Sat May 02 12:05:44 GMT 2009 | T:AquaClientThread : 5 | sendToAllClients +
    Sat May 02 12:05:44 GMT 2009 | T:AquaClientThread : 5 | SEND etat:RUNNABLE sur:AquaClientThread : 2 lastId:13
    Sat May 02 12:05:44 GMT 2009 | T:AquaClientThread : 5 | SEND etat:RUNNABLE sur:AquaClientThread : 4 lastId:13
    Sat May 02 12:05:44 GMT 2009 | T:AquaClientThread : 5 | SEND etat:RUNNABLE sur:AquaClientThread : 6 lastId:13
    Sat May 02 12:05:44 GMT 2009 | T:AquaClientThread : 5 | SEND etat:RUNNABLE sur:AquaClientThread : 7 lastId:13
    Sat May 02 12:05:44 GMT 2009 | T:AquaClientThread : 5 | SEND etat:RUNNABLE sur:AquaClientThread : 8 lastId:13
    Sat May 02 12:05:44 GMT 2009 | T:AquaClientThread : 5 | SEND etat:RUNNABLE sur:AquaClientThread : 10 lastId:13
    Sat May 02 12:05:44 GMT 2009 | T:AquaClientThread : 5 | SEND etat:RUNNABLE sur:AquaClientThread : 12 lastId:13
    Sat May 02 12:05:44 GMT 2009 | T:AquaClientThread : 5 | SEND etat:RUNNABLE sur:AquaClientThread : 13 lastId:13
    Sat May 02 12:05:44 GMT 2009 | T:AquaClientThread : 5 | sendToAllClients -
    Sat May 02 12:05:44 GMT 2009 | T:AquaClientThread : 5 |
    Le code correspondant au stackTrace:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    //-
    public synchronized void doAction(String action, AquaClientThread client, String message){
            echo("");  //<-- RomuServer.java line 531
     
    //-
    finally{
    	try {
    		if(inServerlist)
    			RomuServer.doAction("remove",this,""); //<--AquaClientThread.java line 162
    Et voici le code de AquaClientThread
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    import java.net.*;
    import java.io.*;
    import java.util.Date;
    import javax.xml.parsers.*;
    import org.w3c.dom.Document;
    import org.w3c.dom.Element;
    import org.w3c.dom.Node;
    import org.w3c.dom.NodeList;
    import org.xml.sax.InputSource;
     
    class AquaClientThread extends Thread {
     
        private Socket socket = null;
        public String clientIP;
     
        public String Id;
        public String Pseudo;
        public String pwd;
     
        public PrintWriter out;
        public BufferedReader in;
     
        private RomuServer RomuServer=null;
        private boolean stopThread = false;
        public boolean inServerlist = false;
        int id;
     
        public AquaClientThread(Socket socketR, RomuServer RomuServer_, int id_) throws IOException{
     
            super("AquaClientThread : "+id_);
     
            socket = socketR;
            socket.setSoTimeout(4500000);
            clientIP="";
            Pseudo="";
            Id="";
            pwd="";
     
            clientIP = socket.getInetAddress().getHostAddress();
            out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())), true);
            in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
            RomuServer=RomuServer_;
            id=id_;
            RomuServer.echo("News AquaClientThread : "+id+" ip:"+clientIP);
        }
     
        public void run(){
    		try{
    			out = new PrintWriter(socket.getOutputStream(), true);
    			in = new BufferedReader (new InputStreamReader(socket.getInputStream()));
    			String inputLine;
    			char buf[] = new char[1];
    			while (in.read(buf, 0 ,1)!=-1 && stopThread==false)
                            {
    				inputLine = "";
    				while(buf[0]!='\u0000')
                                    {
    					inputLine = inputLine + buf[0];
    					in.read(buf, 0 ,1);
    				}
    				inputLine = inputLine + '\u0000';
    				ParseXml(inputLine);
    			}
     
    		}catch(IOException e){
    			RomuServer.echo("Excep1:"+e.getMessage());
    		}
    		finally{
    			try {
    				if(inServerlist)
    					RomuServer.doAction("remove",this,"");
    				in.close();
    				socket.close();
    			} catch (IOException e) {
    				RomuServer.echo("Excep2:"+e.getMessage());
    			}
    		}
     
     
        }
     
     
        public void send(String message){
            out.println(message+'\u0000');
            out.flush();
        }
     
        public String xmlView(int num) {
            StringBuffer sb = new StringBuffer();
     
            sb.append("<c><p>");
            sb.append(Pseudo);
            sb.append("</p>");
     
            if(!Id.equals("")) {
                sb.append("<id>");
                sb.append(Id);
                sb.append("</id>");
            }
     
            sb.append("</c>\r\n");
     
            return sb.toString();
        }
     
    private void ParseXml(String message) {
            try{
                DocumentBuilderFactory dbFactory=DocumentBuilderFactory.newInstance();
                DocumentBuilder docBuilder=dbFactory.newDocumentBuilder();
                StringReader sr= new StringReader(message.substring(0,(message.length()-1)));
     
                InputSource is= new InputSource(sr);
                Document doc=docBuilder.parse(is);
     
     
                Element root=doc.getDocumentElement();
                int i;
     
                String command;
                command = root.getNodeName().trim().toUpperCase();
                if (command.compareTo("WHO")==0){
                    NodeList enfants=root.getChildNodes();
     
                    for (i=0;i<enfants.getLength();i++) {
                        Node node=enfants.item(i);
                        String nodeName=node.getNodeName();
     
                        if ((nodeName.compareTo("pseudo")==0)&& (node.hasChildNodes())){
     
                            Pseudo=node.getFirstChild().getNodeValue();
                            if (Pseudo.length()>20) {
                                Pseudo=Pseudo.substring(0,20);
                                setName(Pseudo);
                            }
                        }                    
                        if ((nodeName.compareTo("id_player")==0 && (node.hasChildNodes()))){
                            Id=node.getFirstChild().getNodeValue();
                        }
                        if ((nodeName.compareTo("pwd")==0 && (node.hasChildNodes()))){
                            pwd=node.getFirstChild().getNodeValue();
                        }
                    }
     
                    if (pwd.compareTo("")!=0 && Id.compareTo("")==0) {
                        Id=Identification(Pseudo,pwd);
                    }
                    if(!inServerlist) {
                        if(!Pseudo.startsWith("INCONNU")) {
                        	RomuServer.doAction("add",this,"");
                        }
                        else {
                        	RomuServer.echo("STOP");
                        	stopThread=true;
                        }
                    }
                }
                else if (command.compareTo("POLICY-FILE-REQUEST")==0) {
                	RomuServer.echo("policy");
                    send("<!DOCTYPE cross-domain-policy SYSTEM 'http://www.macromedia.com/xml/dtds/cross-domain-policy.dtd'><cross-domain-policy><allow-access-from domain='*' to-ports='2001' /></cross-domain-policy>");
                }
                else if (command.compareTo("RACINE")==0){
     
                    NodeList enfants=root.getChildNodes();
                    String Pseudo="";
                    String Msg="";
                    String prive="non";
     
                    for (i=0;i<enfants.getLength();i++) {
                        Node node=enfants.item(i);
                        String nodeName=node.getNodeName();
     
                        if ((nodeName.compareTo("pseudo")==0)&& (node.hasChildNodes())){
                            Pseudo=node.getFirstChild().getNodeValue();
                        }
                        if ((nodeName.compareTo("msg")==0 && (node.hasChildNodes()))){
                            Msg=node.getFirstChild().getNodeValue();
                        }
                        if ((nodeName.compareTo("priv")==0 && (node.hasChildNodes()))){
                            prive=node.getFirstChild().getNodeValue();
                        }
     
                    }
     
                    if(Id!="")
                    {
                         RomuServer.doAction("message",this,"<racine><pseudo>"+Pseudo+"</pseudo><msg>"+Msg+"</msg><priv>non</priv></racine>");
                    }
     
                }
                else {
                    RomuServer.echo(new Date().toString()+":"+clientIP+": SENT INVALID MESSAGE :"+message);
                }
     
            } catch (Exception e) {
            	RomuServer.echo("Excep3:"+e.getMessage());
            }
    }
     
     
    private String Identification(String login,String pwd) {
           //[...]
    }
     
    }
    Merci de votre aide, plus j'avance dans le problème plus je me dit "mais ça vient d'où ?"


    Edit:
    J'ai même des threads qui passe en Blocked sans le "Connection reset", par exemple :
    Sat May 02 14:40:38 GMT 2009 | T:AquaClientThread : 39 | Excep1:Connection reset
    Sat May 02 14:40:38 GMT 2009 | T:AquaClientThread : 39 |
    Sat May 02 14:40:38 GMT 2009 | T:AquaClientThread : 39 | doAction REMOVE : LS.K
    Sat May 02 14:40:38 GMT 2009 | T:AquaClientThread : 39 | listClientsXml +
    Sat May 02 14:40:38 GMT 2009 | T:AquaClientThread : 39 | listClientsXml -
    Sat May 02 14:40:38 GMT 2009 | T:AquaClientThread : 39 | sendToAllClients +
    Sat May 02 14:40:38 GMT 2009 | T:AquaClientThread : 39 | SEND etat:RUNNABLE sur:AquaClientThread : 4 lastId:56
    Sat May 02 14:40:38 GMT 2009 | T:AquaClientThread : 39 | SEND etat:RUNNABLE sur:AquaClientThread : 8 lastId:56
    Sat May 02 14:40:38 GMT 2009 | T:AquaClientThread : 39 | SEND etat:RUNNABLE sur:AquaClientThread : 17 lastId:56
    Sat May 02 14:40:38 GMT 2009 | T:AquaClientThread : 39 | SEND etat:RUNNABLE sur:AquaClientThread : 16 lastId:56
    Sat May 02 14:41:13 GMT 2009 | T:main | News AquaClientThread : 57 ip:90.47.167.167
    Sat May 02 14:41:30 GMT 2009 | T:AWT-EventQueue-0 | thread Thread[AquaClientThread : 43,5,main] found in state BLOCKED
    Sat May 02 14:41:30 GMT 2009 | T:AWT-EventQueue-0 | stackTrace :
    Sat May 02 14:41:30 GMT 2009 | T:AWT-EventQueue-0 | - RomuServer:doAction (RomuServer.java line 531)
    Sat May 02 14:41:30 GMT 2009 | T:AWT-EventQueue-0 | - AquaClientThread:ParseXml (AquaClientThread.java line 593)
    Sat May 02 14:41:30 GMT 2009 | T:AWT-EventQueue-0 | - AquaClientThread:run (AquaClientThread.java line 151)
    Edit2:
    Je comprend vraiment rien à chaque fois que ça plante c'est dans une situation différente. Voici un autre plantage :
    Sat May 02 15:07:34 GMT 2009 | T:AquaClientThread : 44 | Excep1:Connection reset
    Sat May 02 15:07:34 GMT 2009 | T:AquaClientThread : 44 |
    Sat May 02 15:07:34 GMT 2009 | T:AquaClientThread : 44 | doAction REMOVE : THC_Nightroth
    Sat May 02 15:07:34 GMT 2009 | T:AquaClientThread : 44 | listClientsXml +
    Sat May 02 15:07:34 GMT 2009 | T:AquaClientThread : 44 | listClientsXml -
    Sat May 02 15:07:34 GMT 2009 | T:AquaClientThread : 44 | sendToAllClients +
    Sat May 02 15:07:34 GMT 2009 | T:AquaClientThread : 44 | SEND etat:RUNNABLE sur:AquaClientThread : 8 lastId:45
    Sat May 02 15:07:34 GMT 2009 | T:AquaClientThread : 44 | SEND etat:RUNNABLE sur:AquaClientThread : 11 lastId:45
    Sat May 02 15:07:34 GMT 2009 | T:AquaClientThread : 44 | SEND etat:RUNNABLE sur:AquaClientThread : 24 lastId:45
    Sat May 02 15:07:34 GMT 2009 | T:AquaClientThread : 44 | SEND etat:RUNNABLE sur:AquaClientThread : 25 lastId:45
    Sat May 02 15:08:54 GMT 2009 | T:main | News AquaClientThread : 46 ip:77.194.225.115
    Sat May 02 15:08:54 GMT 2009 | T:AquaClientThread : 46 | policy
    Sat May 02 15:08:54 GMT 2009 | T:main | News AquaClientThread : 47 ip:77.194.225.115
    Sat May 02 15:09:02 GMT 2009 | T:main | News AquaClientThread : 48 ip:90.27.185.193
    Sat May 02 15:09:08 GMT 2009 | T:main | News AquaClientThread : 49 ip:78.116.53.213
    Sat May 02 15:09:38 GMT 2009 | T:main | News AquaClientThread : 50 ip:82.253.134.50
    Sat May 02 15:10:30 GMT 2009 | T:main | News AquaClientThread : 51 ip:74.58.94.26
    Sat May 02 15:10:30 GMT 2009 | T:AquaClientThread : 51 | policy
    Sat May 02 15:10:31 GMT 2009 | T:main | News AquaClientThread : 52 ip:74.58.94.26
    Sat May 02 15:10:31 GMT 2009 | T:AquaClientThread : 52 | STOP
    Sat May 02 15:10:44 GMT 2009 | T:AWT-EventQueue-0 | thread Thread[AquaClientThread : 42,5,main] found in state BLOCKED
    Sat May 02 15:10:44 GMT 2009 | T:AWT-EventQueue-0 | stackTrace :
    Sat May 02 15:10:44 GMT 2009 | T:AWT-EventQueue-0 | - RomuServer:doAction (RomuServer.java line 531)
    Sat May 02 15:10:44 GMT 2009 | T:AWT-EventQueue-0 | - AquaClientThread:ParseXml (AquaClientThread.java line 593)
    Sat May 02 15:10:44 GMT 2009 | T:AWT-EventQueue-0 | - AquaClientThread:run (AquaClientThread.java line 151)
    La on peut remarquer que le thread passe en Blocked 3 minutes après le freeze de sendToAllClients.

  8. #28
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 45
    Par défaut
    Je suis revenu à une ancienne version du code et j'ai mit ton système pour vérifier si y a pas un Thread qui passe en Blocked et maintenant quand le freeze arrive, j'ai plus aucun Blocked. Donc on oublie tout mon message précèdent.

    Moi je pense que le problème vient des éléments que je met en synchronized ou que je ne met pas en synchronized. C'est une notion que je connaissais pas avant ce problème.

    Est ce que je dois mettre ma fonction send de AquaClientThread en synchronized ?

  9. #29
    Modérateur
    Avatar de nouknouk
    Homme Profil pro
    Inscrit en
    Décembre 2006
    Messages
    1 655
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 655
    Par défaut
    Citation Envoyé par Thixomag Voir le message
    Je suis revenu à une ancienne version du code et j'ai mit ton système pour vérifier si y a pas un Thread qui passe en Blocked et maintenant quand le freeze arrive, j'ai plus aucun Blocked. Donc on oublie tout mon message précèdent.
    A priori, il n'y a pas 36 solutions:

    - soit ton problème provient d'un interblocage et donc il y a forcément deux threads au minimum qui sont bloqués

    - soit ton souci vient d'une exception qui est levée à un moment ou à un autre (à priori par une socket) que tu n'as pas 'vue' dans ton ancienne version, faute de code qui te log l'exception.

    Moi je pense que le problème vient des éléments que je met en synchronized ou que je ne met pas en synchronized. C'est une notion que je connaissais pas avant ce problème.
    La notion de synchronized permet d'éviter des accès concurrents à une même partie de code. L'absence de synchronized peut potentiellement entraîner soit une ConcurrentModificationException (dans tes collections), soit une incohérence dans les informations envoyées par ton serveur aux clients.Donc grosso modo on en revient aux deux possibilités ci-dessus.

  10. #30
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 45
    Par défaut
    Citation Envoyé par nouknouk Voir le message
    - soit ton problème provient d'un interblocage et donc il y a forcément deux threads au minimum qui sont bloqués
    La j'ai une version qui fait aucun Blocked.

    Donc il me manquerait alors des Exception, pourtant j'en ai rajoutées.
    Eh avec le débogueur d'Eclipse, y a pas une option pour afficher toutes les exceptions ? C'est peut-être automatique, y a rien toucher ?

Discussions similaires

  1. Réponses: 3
    Dernier message: 01/06/2009, 17h49
  2. Firefox et OnBlur ne fonctionne plus au bout d'un moment
    Par Zoizoi dans le forum Général JavaScript
    Réponses: 0
    Dernier message: 23/03/2009, 20h31
  3. plantage au bout de 2 boucles
    Par lecknaat dans le forum VB.NET
    Réponses: 3
    Dernier message: 09/06/2007, 15h54
  4. Les objets disparaissent au bout d'un certain moment
    Par restricteur dans le forum Servlets/JSP
    Réponses: 6
    Dernier message: 17/05/2007, 19h03

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