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

Tomcat et TomEE Java Discussion :

Tomcat et multithreading


Sujet :

Tomcat et TomEE Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Mars 2009
    Messages : 57
    Par défaut Tomcat et multithreading
    Bonjour a tous,
    La question que je m'apprete a poser est certainement bete pour la majorité des personnes qui vont la lire, mais bon!

    Comment rendre une application deployé sur Tomcat "multithreadé"... ?
    exemple simple que je voudrai essayer d'avoir:
    Une servlet qui lorsqu'elle est interrogée, lance une boucle sur un nombre allant de 0 jusqu'a 1000000 par exemple, et pour chaque ittération, fait un println sur le client. Quand cette Servlet est appelé a partir d'un navigateur, les nombres de 0 à 1000000 sont affichés ligne par ligne. jusqu'ici, rien de bien compliqué!
    Mais si j'appel cette servlet a partir de deux pages de mon navigateur presque simultanement, l'affichage commence sur la premier page, et ne se lance sur la deuxieme que lorsque le 1000000 est atteint sur la premiere.
    Comment faire pour que ça affiche a tour de role par paquet (comme si j'instanciais deux fois une classe derivant de Thread qui affiche un message propre a l'instance, et que je les lançait en meme temps...)

    Merci pour toutes vos reponses a venir...

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    104
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Mars 2004
    Messages : 104
    Par défaut
    Salut,

    les servlet sont par défaut multithreadées. Elles peuvent être partagées ou non.
    Après la gestion des thread est plutôt du côté du serveur à moins que dans ton code, tu as mis des blocs de synchronisation.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Mars 2009
    Messages : 57
    Par défaut
    Salut Kirua12,

    j'ai créé une Servlet avec le code suivant:

    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
     
    import java.io.IOException;
    import java.io.PrintWriter;
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
     
     
    public class AppliTest extends javax.servlet.http.HttpServlet implements javax.servlet.Servlet {
     
     
    	protected void doGet(HttpServletRequest req, HttpServletResponse resp) 
               throws ServletException, IOException {
    		int cpt=0;
    		PrintWriter out=resp.getWriter();
    		out.println("DEBUT: ");
    		out.println();
    		while(cpt<=1000000){
    			out.println(cpt);
    			cpt++;
    		}	
    		out.println();
    		out.println("FIN");
    		out.close();
    	}  	
     
     
    	protected void doPost(HttpServletRequest req, HttpServletResponse resp) 
               throws ServletException, IOException {
    		this.doGet(req, resp);
    	}  	
     
    }
    Quand je tape l'adresse dans une page de mon navigateur, j'ai les nombre de 0 à 100000 qui s'ecrivent. ça prend du temps et c'est ce que je veux justement, pour pouvoir suivre la connexion et la reception de la reponse.

    Mais quand je tape la meme adresse sur deux pages de mon navigateur et que je valide presque en meme temps, l'affichage des nombres commence sur la premiere sur laquelle j'ai validé, et ne commence pas sur la deuxieme. cette derniere attend jusqu'a ce que le mot "FIN" soit affiché sur la premiere pour commencer a afficher les nombres de 0 à 1000000 !

    y-a-il un moyen de faire en sorte que l'affichage sur les deux pages se fasse presque en meme temps, c'est a dire, repondre aux deux pages a tour de role, partie par partie? (la definition meme du multi-thread...)

  4. #4
    Membre chevronné
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2005
    Messages
    241
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2005
    Messages : 241
    Par défaut
    Bonjour,

    êtes-vous certain que c'est un problème au niveau du serveur, et non pas au niveau du client ( navigateur ) ?

    Avez-vous essayé avec deux navigateurs différents? ( dans le sens, deux programmes type IE et Firefox )

    Cordialement,

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Mars 2009
    Messages : 57
    Par défaut
    Bonjour Desboys,
    Effectivement, tu avais raison.
    Apparement, c'est firefox qui n'a qu'un seul processus pour faire une requete est recevoir la reponse, meme si de nombreuses pages sont ouvertes! il n'est pas multihreadé apparement... sinon, pourquoi en lançant plusieurs instances d'une petite application que j'ai fait en java (quelques lignes pour envoyer une requete et afficher la reponse sur la consol eclipse), j'ai effectivement un affichage concurentiel, c'est a dire, l'affichage de la reponse de chacune des instances à tour de role par paquet???

    Merci pour ta reponse, je me disais bien que Tomcat devais faire ça automatiquement, mais le teste avec firefox m'a troublé

    Encore merci.

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

Discussions similaires

  1. Tomcat Multithreading et serveur multicoeurs
    Par root76 dans le forum Tomcat et TomEE
    Réponses: 0
    Dernier message: 18/03/2014, 16h49
  2. Docs, Tutoriels et astuces Tomcat et JBoss (US)
    Par Ricky81 dans le forum Tomcat et TomEE
    Réponses: 4
    Dernier message: 13/03/2009, 21h00
  3. Context sous Tomcat
    Par EL MANSOURI dans le forum JBuilder
    Réponses: 5
    Dernier message: 28/01/2003, 11h26
  4. Multithreading sous HP Ux 11
    Par pykoon dans le forum Autres éditeurs
    Réponses: 1
    Dernier message: 18/10/2002, 23h36
  5. Tomcat + Apache-SOAP
    Par lucho31 dans le forum Services Web
    Réponses: 3
    Dernier message: 17/10/2002, 09h55

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