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 :

[servlet]multithreading d'une servlet


Sujet :

Servlets/JSP Java

  1. #1
    Membre confirmé
    Inscrit en
    Septembre 2005
    Messages
    84
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Septembre 2005
    Messages : 84
    Par défaut [servlet]multithreading d'une servlet
    Bonjour!

    je réalise une httpservlet pour communiquer avec un client mobile.
    Je veux que le traitement des requêtes se déroule en plusieurs étapes :

    1) En recevant une requête, le thread la met dans une file (file1)
    2) Un groupe de threads spécialisés récupère les requêtes à partir de la file1, les traite et les place dans une autre file (file2).
    3) Un autre thread les récupère à partir de la file2 et renvoie la réponse au client.

    J'éspère que j'étais assez claire.
    Avez-vous une idée de la façon de procéder?

  2. #2
    ady
    ady est déconnecté
    Membre habitué

    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 11
    Par défaut
    Salut,
    Je ne comprend pas pour quoi tu veut utiliser plusieurs threads ; si tu veux que les composants de l’application soit couplés de façon faible tu peux utiliser les filtres.

    Ady

  3. #3
    Membre confirmé
    Inscrit en
    Septembre 2005
    Messages
    84
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Septembre 2005
    Messages : 84
    Par défaut
    En fait c'est le traitement des requêtes qui doit se faire en multithreads, de plus je veux séparer les opérations de traitement des opérations de communication réseau.

  4. #4
    Rédacteur
    Avatar de _Mac_
    Profil pro
    Inscrit en
    Août 2005
    Messages
    9 601
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 9 601
    Par défaut
    J'ai pas compris non plus le besoin : pourquoi vouloir "séparer les opérations de traitement des opérations de communication réseau" ? Tu entends quoi par là et tu attends quoi ? Par défaut, les servlets sont multithreadés (pour ne pas avoir de servlet multithreadé, il faut implémenter l'interface javax.servlet.SingleThreadModel), d'où qu'est-ce qui ne va pas ?

  5. #5
    Membre confirmé
    Inscrit en
    Septembre 2005
    Messages
    84
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Septembre 2005
    Messages : 84
    Par défaut
    je ne veux pas me retrouver avec une quantité énorme de thread, je veux qu'il n'y ait qu'un seul thread qui reçoit les requêtes, ce thread les décode et les met dans une file il passe ensuiteà une autre requête.
    Et c'est un autre thread qui va traiter la requete, et mettre le résultat dans une deuxième file.
    Enfin, un troisième thread récupère les réponses à partir de la deuxième file, les code et les transmet.

    J'éspère avoir été assez claire?

    J'ai choisi cette architecture pour mon application parce que je pense que c'est la façon la plus efficace d'implémenter ce type d'applications. Ainsi, j'ai un Receiver Thread , des Worker Thread et un Sender Thread.

    Si vous pensez qu'il est plus efficace de faire autrement, je serais ravi de connaitre vos arguments.

  6. #6
    ady
    ady est déconnecté
    Membre habitué

    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 11
    Par défaut
    Tu ne peut pas avoir un seul thread qui recoit toutes les requettes; pour chaque nouvelle requette, le serveur vas créer un nouveau thread (d'habitude ça existe un pool des threads deja crées ) qui vas executer la méthode service() de ton servlet (d'hailleure il y aura une seule instance de ton servlet). Ce thread retourne au pool de que la réponse est envoyé au client. Si entre temp il y une autre requette, un autre thread sera crée et la même méthode service() sera appellé; c'est pour ça il faut faire attention que tes methodes doGet et doPost soit thread-safe.

    Si tu veux que un seul thread execute la méthode service() à la fois ou tu ajoute le mot synchronized à la méthodeservice() ou tu utilise SingleThreadModel et dans ce cas il y auras plusieures instances de ton servlet crées et chaque nouvelle requette sera servie par un seul thread.

  7. #7
    Membre émérite

    Profil pro
    Inscrit en
    Mars 2002
    Messages
    652
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2002
    Messages : 652
    Par défaut
    Ce que tu cherches à faire, c'est un container WEB !
    Tomcat est en open source donc, livré avec les sources. Je te conseil vivement de regarder par toi même comment il gère son pool de threads.
    Si cela ne te conviens pas, il ne te reste qu'à écrire ton propre fonctionnement mais sache que tu ne pourras pas l'implémenter sous forme de Servlet car je cycle de vie des Servlets est régie par une spécification précise et à l'encontre de laquelle tu est en train de tracer une route.

    Peut tu nous dire ce qui ne te plais pas dans le modèle de Thread des Servlet ?

  8. #8
    Membre confirmé
    Inscrit en
    Septembre 2005
    Messages
    84
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Septembre 2005
    Messages : 84
    Par défaut
    Si j'ai bien compris, la meilleure façon c'est de programmer la méthode doPost et les threads seront gérés par Tomcat.

    Je crois que je ne comprenais pas le fonctionnement du pool de threads dans Tomcat.

    Merci beaucoups pour vos réponses.

    PS: si vous avez un document qui explique la gestion des threads sous Tomcat, merci de me le communiquer

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

Discussions similaires

  1. appler une servlet apartir d'une autre servlet
    Par fibi007 dans le forum Servlets/JSP
    Réponses: 5
    Dernier message: 18/04/2008, 19h24
  2. [COMPILATION][SERVLET]Erreur dans une servlet
    Par casho dans le forum Servlets/JSP
    Réponses: 1
    Dernier message: 04/09/2006, 19h40
  3. [jsp][servlet] Sécurisation d'une servlet
    Par Gromitou dans le forum Servlets/JSP
    Réponses: 8
    Dernier message: 17/02/2006, 12h17
  4. [Servlet]probleme avec une servlet
    Par adilou1981 dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 15/06/2005, 10h17
  5. [Servlet] Comment utilisé une servlet plusieurs fois ?
    Par gandalf_le_blanc dans le forum Servlets/JSP
    Réponses: 9
    Dernier message: 03/06/2004, 14h49

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