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 :

Code Java Reload Context Tomcat


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
    Avril 2004
    Messages
    117
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 117
    Par défaut Code Java Reload Context Tomcat
    Bonjour,

    je modifies des fichiers *.properties situés dans :
    context/WEB-INF/classes ou /context/WEB-INF
    et j'aimerai que tomcat recharge le context car lorsque je fais le reload avec ant ou par l'interface web mes properties sont pris en compte (Traduction de l'application).
    Mes questions sont :
    existe-t'il une configuration du tomcat pour la prise en compte des changement des fichiers properties ?
    ou sinon :
    peu-t'on recharger le context en cours en code Java ? (Si vous aviez un bout de code ;-) )

    Merci d'avance

  2. #2
    Membre confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2002
    Messages
    237
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2002
    Messages : 237
    Par défaut
    Dans le fichier server.xml dans "conf" tu as une balise "contexte" qui correspond à ton application.
    Là tu dois avoir reloadable="true".

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <Context path="/examples" docBase="examples.war" debug="0"
    reloadable="true" crossContext="true">
    Je ne sais pas si çà réponds à ta question ?

    Sinon via le manager (application fournit par tomcat) tu peux aussi recharger à chaud et même récupérer l'URL qui recharge l'application.
    En rechargeant tu perds les sessions ouvertes of course.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    117
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 117
    Par défaut
    Oui les connections en cour seront stoppés mais es tu sur que tomcat prend en compte le changement des properties dans :
    context/WEB-INF/monpropertiesmodifie_fr.properties
    context/WEB-INF/classes/autrepropertiesmodifie_fr.properties

    Voici mon code JAVA (framework tapestry à base de Servlet) pour la lecture et la modification des properties :
    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
     
    HashMap oHash = v.getOHashTraduction();
            Iterator oEnum = oHash.keySet().iterator();
            while (oEnum.hasNext()){
                String sKeyProp = (String) oEnum.next();
                Properties oProp = (Properties)oHash.get(sKeyProp);
     
                IResourceLocation baseLocation = new ContextResourceLocation(getPage().getRequestCycle().getRequestContext().getServlet().getServletContext(),v.getSCheminRelatif());
                IResourceLocation localized = baseLocation.getRelativeLocation(v.getSNomFichier()+"_"+sKeyProp+".properties");
                FileOutputStream oFileStream = new FileOutputStream(getPage().getRequestCycle().getRequestContext().getServlet().getServletContext().getRealPath(v.getSCheminRelatif()+v.getSNomFichier()+"_"+sKeyProp+".properties"));
                oProp.store(oFileStream,null);
                oFileStream.close();
     
                // sauvegarde sur le cote pour être sûr
                ResourceBundle oResConfig = ResourceBundle.getBundle("config_file");
                FileOutputStream oFileStreamSauv = new FileOutputStream(oResConfig.getString("CheminProperties")+v.getSCheminRelatif()+v.getSNomFichier()+"_"+sKeyProp+".properties");
                oProp.store(oFileStreamSauv,null);
                oFileStreamSauv.close();
     
            }
            v.setOHashTraduction(new HashMap());
            getEngine().getComponentMessagesSource().reset();
            }
            catch(Exception e){
                e.printStackTrace();
            }
    On m'a parlé des class loader pour que le tomcat prennent bien en compte le changement de date du fichiers mais j'ai rien trouvé la dessus
    auriez-vous une piste ? un bout de code pour modifer un properties avec prise en compte du tomcat pour que je puisse l'adapter à mon framework...
    Merci

  4. #4
    Membre confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2002
    Messages
    237
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2002
    Messages : 237
    Par défaut
    La seule chose que je peux te dire c'est que les properties doivent se trouver dans le classpath.
    Donc "WEB-INF/classes" OK
    mais "WEB-INF" tout seul je ne pense pas, à moins que tu l'aies ajouté dans le classpath de tomcat.

    Sinon normalement, dans un contexte où "reloadable=true" si tu modifies ou ajoutes un fichier properties, il devrait le charger. Mais si tu le fais via le code c'est à confirmer.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    117
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 117
    Par défaut
    Je vais faire le test et je tiens la communauté au courant.
    Le but est de rendre une application web tomcat traduisable en temps "réel"

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    117
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 117
    Par défaut
    Lorsque je livre un war dans un tomcat
    comment puis je lui dire le fameux "reloadable=true" ?
    quel est l'instruction dans le web.xml ? ou autre ?merci

Discussions similaires

  1. Réponses: 3
    Dernier message: 14/10/2015, 10h52
  2. Déterminer le temps horloge de tomcat en code Java
    Par chiheb1111111 dans le forum Tomcat et TomEE
    Réponses: 4
    Dernier message: 13/06/2012, 12h33
  3. Compiler code Java projet Tomcat Eclipse
    Par jojo_ol76 dans le forum Tomcat et TomEE
    Réponses: 0
    Dernier message: 30/01/2011, 16h09

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