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 :

Rechargement automatique du contexte


Sujet :

Struts 1 Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : Madagascar

    Informations forums :
    Inscription : Mai 2007
    Messages : 13
    Par défaut Rechargement automatique du contexte
    Bonjour à tous
    Dans mon appli web, j'ai besoin de mettre un flag qui lorsqu'on lui donne une certaine valeur, on ne peut pas effectuer une certaine action. J'ai mis ce flag dans Application.properties , et à un certain moment je modifie ce fichier( je modifie celui dans Web-inf/classes/Application.properties). Or quand on modifie ce fichier, le contexte de l'application est rechargé ,et après j'ai des exceptions du genre noclassDefFoundError, ce qui est normale puisque le contexte n'a pas encore entièrement démarré.
    Ma question est : y a-t-il une façon d'avoir un paramètre globale de l'application que l'on puisse modifier à volonté sans être pris par un rechargement de contexte?
    Ce paramètre est visible n'importe où dans l'application (comme la session, mais pour tous les utilisateurs).
    Si oui , comment dois-je m'y prendre , sinon quelle est le best practice dans mon cas
    JDK 1.5
    Struts 1.2
    Merci d'avance

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 276
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 276
    Par défaut
    Dans un application web, tu as le scope request, session et application qui est effectivement partagé par tous les utilisateurs.
    Tu peux utiliser le méthode setAttribute de l'objet ServletContext que tu obtiens par la méthode getServletContext d'une servlet.

    Tu peux utiliser des paramètres dans ton web.xml que tu pourras récupérer par la méthode ci-dessus.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <context-param>
          <param-name>name_of_context_initialization_parameter</param-name>
          <param-value>value_of_context_initializtion_parameter</param-value>
          <description> Again, some description </description>
    </context-param>

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : Madagascar

    Informations forums :
    Inscription : Mai 2007
    Messages : 13
    Par défaut
    Merci d'avoir répondu.

    Dans mon cas getServeltContext().getAttribute("actionEnCours") vaut null!!!!
    par contre getServeltContext().getInitParameter("actionEnCours") donne bien 0
    et getServeltContext().setAttribute(String name,Object value) ne modifie pas le <param-value>

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <context-param>
      <description>Zero si aucune action n'est en cours</description>
      <param-name>actionEnCours</param-name>
      <param-value>0</param-value>
     </context-param>
    Comment modifier alors <param-value> ?

  4. #4
    Membre Expert
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 276
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 276
    Par défaut
    Oups, je t'ai dit une connerie.
    Effectivement, pour récupérer un paramètre, il faut utiliser getInitParameter().
    Tu ne pourras pas modifier cette valeur.

    Ce que tu peux faire, c'est récupérer cette valeur au lancement de ton application, et la stocker et la modifier via un setAttribute.

    Si tu veux stocker la dernière valeur utilisée en cas de redémarrage de l'application, il faudra utiliser autre chose que le web.xml.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : Madagascar

    Informations forums :
    Inscription : Mai 2007
    Messages : 13
    Par défaut
    Ok c'est clair. Merci fr1man. Je tacherai alors de trouver d'autres moyen

  6. #6
    Membre chevronné

    Profil pro
    Inscrit en
    Mars 2007
    Messages
    392
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 392
    Par défaut
    tu peux utiliser un fichier properties qui n'est pas stocké dans le répertoire "classes" de ton serveur d'application, mais dans un autre répertoire, ainsi quand il est modifié, le serveur d'application ne redémarre pas.
    pour que ce fichier ne soit pas accessible par le client en HTTP, pense à mettre ce fichier dans un répertoire de WEB-INF.

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

Discussions similaires

  1. Réponses: 9
    Dernier message: 14/05/2008, 16h49
  2. rechargement automatique de la page
    Par intissar_g dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 06/08/2007, 11h53
  3. sélection automatique du contexte
    Par capaunord dans le forum Designer
    Réponses: 1
    Dernier message: 01/06/2007, 08h35
  4. rechargement automatique de la page
    Par intissar_g dans le forum ASP.NET
    Réponses: 2
    Dernier message: 31/05/2007, 15h53
  5. Réponses: 1
    Dernier message: 23/11/2006, 14h13

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