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

avec Java Discussion :

Stocker des variables dans la couche application


Sujet :

avec Java

  1. #1
    Membre régulier

    Inscrit en
    Décembre 2002
    Messages
    49
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 49
    Points : 76
    Points
    76
    Par défaut Stocker des variables dans la couche application
    Bonjour,

    J'aimerai savoir comment stocker des variables dans la couche application

    Je pensais à un truc du genre ApplicationContext.setAttribute(), comme pour les sessions, mais çà n'a pas l'air d'exister

    merci d'avance

  2. #2
    Rédacteur
    Avatar de CyberChouan
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2007
    Messages
    2 752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Janvier 2007
    Messages : 2 752
    Points : 4 314
    Points
    4 314
    Par défaut
    Qu'appelles-tu la "couche application" ?
    Et pour quel genre d'application ? web ? swing ?...

    Dans les deux cas, si tu veux des variables accessibles de toute ton application, ce ne sont pas les solutions qui manquent :
    - une classe statique
    - un singleton de propriétés
    - etc.
    Avant de poster, pensez à regarder la FAQ, les tutoriaux, la Javadoc (de la JRE que vous utilisez) et à faire une recherche
    Je ne réponds pas aux questions techniques par MP: les forums sont faits pour ça
    Mes articles et tutoriaux & Mon blog informatique

  3. #3
    Membre régulier

    Inscrit en
    Décembre 2002
    Messages
    49
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 49
    Points : 76
    Points
    76
    Par défaut
    non c'est plus compliqué que çà , je parlais du scope application
    c'est à dire que je veux que ma variable reste stockée tant que le serveur n'est pas redémarrer.

  4. #4
    Rédacteur
    Avatar de CyberChouan
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2007
    Messages
    2 752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Janvier 2007
    Messages : 2 752
    Points : 4 314
    Points
    4 314
    Par défaut
    Ca n'est pas beaucoup plus compliqué sur un serveur...

    Une classe statique ne se comporte pas différemment sur un serveur que sur une application "client lourd". Une fois tes variables définies dans cette classe statique, elles seront accessibles tant que ton serveur n'a pas redémarré.


    Si tu veux vraiment prendre en compte l'aspect "serveur", tu peux créer une servlet (une classe étendant la classe javax.servlet.HttpServlet), qui maintient tes variables et offre des accesseurs dessus.

    Tant que ton serveur ne redémarre pas (et que ta servlet ne "crashe" pas), tes variables seront conservées et accessibles.
    Avant de poster, pensez à regarder la FAQ, les tutoriaux, la Javadoc (de la JRE que vous utilisez) et à faire une recherche
    Je ne réponds pas aux questions techniques par MP: les forums sont faits pour ça
    Mes articles et tutoriaux & Mon blog informatique

  5. #5
    Membre régulier

    Inscrit en
    Décembre 2002
    Messages
    49
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 49
    Points : 76
    Points
    76
    Par défaut
    merci en faites il fallait utiliser le getServletContext().setAttribute pour arriver à fixer ces variables

    le code suivant va incrémenter un compteur à chaque fois qu'une servlet est appelé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    if (getServletContext().getAttribute("test")!=null){
                    Integer test =((Integer)getServletContext().getAttribute("test")) +1;
                    getServletContext().setAttribute("test", test);
                }else {
                    getServletContext().setAttribute("test", 1);
                }

  6. #6
    Membre éprouvé Avatar de Jidefix
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    742
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations forums :
    Inscription : Septembre 2006
    Messages : 742
    Points : 1 154
    Points
    1 154
    Par défaut
    Méfie-toi des accès concurrents, imagine que deux clients de ton application accèdent à ta servlet en même temps: alors ta méthode s'éxécutera deux fois en parallèle, et il est possible qu'ils récupèrent la même variable et que du coup l'incrémentation se fasse mal:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Integer test =((Integer)getServletContext().getAttribute("test")) +1; //Ligne du client 1
    Integer test =((Integer)getServletContext().getAttribute("test")) +1; //Ligne du client 2
    getServletContext().setAttribute("test", test);// ligne du client 2
    getServletContext().setAttribute("test", test);// ligne du client 1
    => les deux clients récupèrent la même valeur de "test": mettons 42 pour l'exemple
    => chacun l'incrémente: => test=43 pour les deux clients
    => chacun le remet en mémoire: test=43 alors que la méthode a été appellée deux fois.
    Veuillez agréer nos sentiments les plus distingués. Soyez assurés de notre entière collaboration, bien à vous pour toujours et à jamais dans l'unique but de servir l'espérance de votre satisfaction, dis bonjour à ton père et à ta mère, bonne pétanque, mets ton écharpe fais froid dehors.

Discussions similaires

  1. Stocker des variables globales (Variant) dans une table
    Par Gautch dans le forum VBA Access
    Réponses: 4
    Dernier message: 18/04/2014, 09h55
  2. Réponses: 23
    Dernier message: 05/02/2010, 10h38
  3. Stocker des balises dans une variable
    Par floran974 dans le forum Langage
    Réponses: 2
    Dernier message: 23/05/2009, 14h38
  4. Stocker des valeurs dans des variables sessions
    Par Jcpan dans le forum Langage
    Réponses: 3
    Dernier message: 31/03/2009, 10h39
  5. [C#2005] Stocker des variables dans une classe
    Par Herlece dans le forum Windows Forms
    Réponses: 7
    Dernier message: 13/10/2008, 10h30

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