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

Servlets/JSP Java Discussion :

Contenu servlet non exécuté


Sujet :

Servlets/JSP Java

  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Juin 2011
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2011
    Messages : 20
    Par défaut Contenu servlet non exécuté
    Bonjour,

    J'ai une erreur très étrange qui me dépasse complètement.

    Voilà, la logique de mon application est simple.

    J'affiche index.jsp : dedans, j'ai un lien vers ma servlet /LaunchServlet.

    Voici le contenu de ma servlet LaunchTest :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    HttpSession session = request.getSession();
            session.setAttribute("finished" , "false");
            System.out.println("Avant  : " + session.getAttribute("finished") + " - " + session.getId());
            Thread t = new LaunchTestThreads(session);
            t.setPriority(Thread.MAX_PRIORITY);
            t.start();
            getServletContext().getRequestDispatcher("/attente.html").forward(request, response);
    Ma servlet lance donc un Thread puis affiche la page attente.html

    Le Thread lancé contient ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    public void run() {
            try {
                System.out.println("Avant pause  : " + s.getAttribute("finished") + " - " + s.getId());
                Thread.sleep(10000);
                s.setAttribute("finished", "true");
                System.out.println("Après pause : " + s.getAttribute("finished") + " - " + s.getId());
            } catch (InterruptedException ex) {
                Logger.getLogger(LaunchTestThreads.class.getName()).log(Level.SEVERE, null, ex);
            }
     
        }
    Il est donc sensé mettre le flag "finished" à true au bout de 10 secondes.

    La page attente.html lorsqu'elle est lancée charge un script Ajax qui appelle ma servlet IsFinished :
    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
    HttpSession session = request.getSession();
                String reponse = (String)session.getAttribute("finished");
                int i = 0;
                while (i < 15) {
                    reponse = (String)session.getAttribute("finished");
                    System.out.println("is Finished tour "+ i +" : " + session.getAttribute("finished") + " - " + session.getId());
                    if (reponse != null) {
                        if (reponse.equals("true")) {
                            System.out.println("Terminé");
                            out.print(reponse);
                            i=15;
                        }
                    }
                    try {
                        Thread.sleep(1000);
                    } catch (InterruptedException ex) {
                        Logger.getLogger(isFinished.class.getName()).log(Level.SEVERE, null, ex);
                    }
                    i++;
                }
    Malheureusement, j'obtiens des choses très étranges :
    Le contenu de ma servlet LaunchTest n'est quelques fois pas exécuté. En fait, la page attente.html est affichée mais cette ligne de code de LaunchTest
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    System.out.println("Avant  : " + session.getAttribute("finished") + " - " + session.getId());
    n'est pas affichée et le Thread ne semble jamais lancé.
    Si je fais un refresh sur LaunchTest, tout fonctionne normalement...

    Quelqu'un comprend il ce qui se passe?

    Merci

  2. #2
    Membre émérite Avatar de noOneIsInnocent
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    1 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 037
    Par défaut
    Bonjour
    la première chose que je vois c'est que à chaque fois tu crées un nouveau thread pour chaque appel à la servlet launch.
    Puis ce thread se termine après l'instruction :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
      System.out.println("Après pause : " + s.getAttribute("finished")
    car tu sors de ta méthode run.

    Quand tu fais ton refresh tu recrées un nouveau thread et ton code est à nouveau executer

    Par contre je ne comprends pas ton objectif final.
    Est-ce que tu peux nous l'expliquer ?

Discussions similaires

  1. Servlet et Thread non exécutée
    Par hapalemur dans le forum Servlets/JSP
    Réponses: 7
    Dernier message: 10/03/2015, 21h25
  2. Non exécution d'une méthode repaint()
    Par Flophx dans le forum AWT/Swing
    Réponses: 7
    Dernier message: 05/05/2006, 18h04
  3. [MySQL] Requête non exécutée
    Par harlock59 dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 03/05/2006, 15h42
  4. On error goto Err : goto non exécutée au 2ème appel
    Par charliejo dans le forum Access
    Réponses: 1
    Dernier message: 11/04/2006, 15h00
  5. INCLUDE non exécuté
    Par Sadneth dans le forum ASP
    Réponses: 3
    Dernier message: 07/09/2003, 00h44

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