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

Struts 1 Java Discussion :

[Pool] Gestion de pool


Sujet :

Struts 1 Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 84
    Par défaut [Pool] Gestion de pool
    Bonjour,

    quelqu'un aurait t-il un exemple de code plutot complexe gérant les pools de connexion (org.apache.common.pool).

    Merci beaucoup.

    Koko22

  2. #2
    Membre émérite
    Avatar de RanDomX
    Profil pro
    sans
    Inscrit en
    Mars 2003
    Messages
    579
    Détails du profil
    Informations personnelles :
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : sans

    Informations forums :
    Inscription : Mars 2003
    Messages : 579
    Par défaut
    Demande des choses précises et je pourrais t'aider , je connais bien ce produit.

    @+

  3. #3
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 84
    Par défaut Réponse
    Salut,

    Je voudrais faire un pool d'Action.

    Cordialement.

    Koko22

  4. #4
    Membre émérite
    Avatar de RanDomX
    Profil pro
    sans
    Inscrit en
    Mars 2003
    Messages
    579
    Détails du profil
    Informations personnelles :
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : sans

    Informations forums :
    Inscription : Mars 2003
    Messages : 579
    Par défaut
    toujours pour ton pool d'ActionStruts depuis le requestProcessor ?

    Si tes besoins sont simples, je te conseille de prendre un pool de type stack :
    http://jakarta.apache.org/commons/pool/apidocs/org/apache/commons/pool/impl/StackObjectPool.html

    Sinon, un peu plus générique mais plus complexe a mettre en place:
    http://jakarta.apache.org/commons/pool/apidocs/org/apache/commons/pool/impl/GenericObjectPool.html

    Sinon tu peux aussi définir ta stratégie perso en impléùménetant les différentes interfaces fournis.


    As -tu deja une certaines experiences avec les pools ? Ce n'est pas si simple de trouver la bonne stratégie.

    Sinon mettre un pool d'action dans Struts n'a que peu d'interets, car les objets actions sont en général stateless et donc partagés et clonés entre différents threads du conteneur de servlet.
    Ce n'est en tout cas pas un goulot d'etranglement.

    @+

  5. #5
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 84
    Par défaut
    Salut RanDomX,

    L'idée est de faire une Action unique. Etant donné que c'est géré par HashMap, et qu'il recupere une instance à partir du nom de la classe, tu te rends vite compte que la HashMap ne va contenir qu'un élement.
    D'ou risque d'étranglement.

    L'idée est de gérer une liste d'Action(Qui sera unique). La liste va contenir des élements similaires(puisque c'est la meme Action). D'ou l'idée de pool.

    Je n'ai aucune experience dans la réalisation de pool de connection.

    Cordialement.

    Koko22

  6. #6
    Membre émérite
    Avatar de RanDomX
    Profil pro
    sans
    Inscrit en
    Mars 2003
    Messages
    579
    Détails du profil
    Informations personnelles :
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : sans

    Informations forums :
    Inscription : Mars 2003
    Messages : 579
    Par défaut
    si tu as lu mon precedent message jusqu'au bout, jer t'ai expliqué pk il ne peut pas y avoir de risque d'étranglement.

    Les Actions sont stateless et sont "dupliquées" par le JVM.

    Efectivement tu n'as qu'une action ds la map (voir requestProcessor ds API struts) pou un nom donné.

    A cet effet , les concepteurs de Strtus ont longtemps hésités à rajouter un flag "singleton" ds la declaration des actions ds Struts-config.
    Au final, il ne l'ont pas fait. Ce qui tends à démontrer que les instance bien qu'unique résident en plusieurs exemplaires ds la VM ou tout au moins sont partagées.

    Si effectivement tu as des action Statefull (qui modifie l'état interne de ton application, pas simplement font juste un calcul queconque), alors le pool s'avère interréssant.

    Dans ce cas, et dans ce cas seulement, il va te falloir gerer la remise à zero des instances (pour en effacer les états), ainsi que la remise à dispo ds le pool.

    Ce n'est pas une chose simple à faire si effectivement tu n'as aucune experience de pool.

    A mon avis, si ton appli est antiperformante, penche toi d'abord sur le code que tu as ajouté, plutot que sur l'implémentation d'un framework plus qu'éprouvé.


    Bon courage,
    @+


    Lionel

  7. #7
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 84
    Par défaut
    Salut RanDomX,

    Voici ma Factory :


    public class MyPoolFactory extends BasePoolableObjectFactory
    {
    public Object makeObject() throws Exception
    {
    Action act = new Action();
    return act;
    }


    public void destroyObject(Object arg0) throws Exception
    {
    }

    public boolean validateObject(Object arg0)
    {
    return true;
    }

    public void activateObject(Object arg0) throws Exception
    {
    }
    public void passivateObject(Object arg0) throws Exception
    {
    }
    }
    .

    Voici mon main(Test) :

    GenericObjectPool pool = new GenericObjectPool(new MyPoolFactory(),100,GenericObjectPool.WHEN_EXHAUSTED_FAIL,5,5);
    pool.setMinIdle(5);
    pool.setMaxIdle(5);
    pool.setNumTestsPerEvictionRun(5);

    Trace.warn(".","Avant emprunt");
    Action act = (Action) pool.borrowObject();
    Trace.warn(".","J'ai emprunte");
    act.execute();

    Action act2 = (Action) pool.borrowObject();
    act2.execute();
    Trace.warn(".","Apres emprunt: " + pool.getNumActive());
    Trace.warn(".","Nbre max active ---->"+pool.getMaxActive());
    Trace.warn(".","Num Idle---->"+pool.getNumIdle());

    pool.returnObject(act);
    pool.returnObject(act);
    pool.returnObject(act);
    pool.returnObject(act);
    pool.returnObject(act);
    pool.returnObject(act);
    pool.returnObject(act);

    Action act3 = (Action) pool.borrowObject();
    Trace.warn(".","Action--->"+act3);
    act3.execute();


    Trace.warn(".","Rendu : " + pool.getNumActive());
    Trace.warn(".","MaxIdle : " + pool.getMaxIdle());



    Ce code gére les pools exactement comme un tableau. Il n'ya aucune création d'objet à l'init(Lors de l'appel du constructeur). Les objets sont crées quand je fais un borrowObject.



    Koko22

  8. #8
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 84
    Par défaut
    Salut RanDomX,

    Je pense que tu as tout à fait raison. Cela n'apporte rien. Merci beaucoup.

    Koko22

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

Discussions similaires

  1. Gestion des pools de threads dans JBoss EAP 4.2
    Par mOuLi dans le forum Wildfly/JBoss
    Réponses: 0
    Dernier message: 04/12/2009, 10h52
  2. problème gestion de pools dans weblogic
    Par moulay1426 dans le forum Weblogic
    Réponses: 1
    Dernier message: 05/01/2009, 18h10
  3. pb de gestion de pool avec c3p0 et spring 2
    Par sinus dans le forum JDBC
    Réponses: 3
    Dernier message: 14/11/2006, 23h53
  4. Réponses: 4
    Dernier message: 28/09/2006, 01h12
  5. Gestion de pool de connexion
    Par vikrem dans le forum JSF
    Réponses: 2
    Dernier message: 20/09/2006, 14h15

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