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

EDI et Outils pour Java Discussion :

Bonne pratique, configuration de projets


Sujet :

EDI et Outils pour Java

  1. #1
    Membre chevronné
    Homme Profil pro
    Développeur Java
    Inscrit en
    Avril 2004
    Messages
    265
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Avril 2004
    Messages : 265
    Par défaut Bonne pratique, configuration de projets
    Bonjour,

    Je travaille sur un projets J2EE à peu prés MVC (struts & co, un projet Common et un projet Web en gros), qui contient différents fichiers de configuration (xml et .properties pour des données de configuration hétéroclites : droits des utilisateurs, tailles des caches, ...).

    J'aimerais mettre en place quelques quelques chose de propre qui permettrait d'utiliser cette conf sans avoir à me préocuper de quel fichier j'utilise (ni de sa forme), depuis la partie métier comme la parrtie Web.

    Avez-vous quelques bonnes pratiques à me conseiller car, plus j'y songe et plus j'ai peur de mettre en place une usine à gaz qui ne simplifierait rien du tout...

    2 petites remarques : Je voudrais pouvoir une fois en prod recharger ces fichiers, et l'appli étant décliner en plusieurs sites, j'ai des fichiers de prop qui sont prioritaires sur d'autres...

    Voila j'éspère que, au moins vous comprendrez ma question...

    Merci d'avance



    [Modéré par Didier] : ajout de tag dans le titre - Les règles du forum Java

  2. #2
    ego
    ego est déconnecté
    Rédacteur

    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juillet 2004
    Messages
    1 883
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2004
    Messages : 1 883
    Billets dans le blog
    2
    Par défaut
    Tu as Maven
    Et si cela ne te conviens pas, tu peux utilisez Ant. Moi, j'utilises Ant et ses capacités à définir des variables te permettant d'aller chercher tel ou tel fichier. Ainsi, je sépare mes différents fichiers dans des répertoires dédiés à mes différents environnements : dév (voir dev1, dev2,...), intégration, recette, production,...Dans chaque répertoire, j'ai une version des fichiers adaptée aux paramètres spécifiques des dits environnements.

    Ensuite, je fais des ordres genre : "deploy recette", "deploy production",...
    Ant récupère mes paramètres et va chercher les bons fichiers de configuration

    Si la solution Ant te va, on peut en discuter un peu plus.
    Côté Maven, je sais que c'est à la mode mais je n'ai jamais mis cela en oeuvre car je suis trop vieux et j'ai ma petite solution Ant qui marche très très bien

  3. #3
    Membre chevronné
    Homme Profil pro
    Développeur Java
    Inscrit en
    Avril 2004
    Messages
    265
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Avril 2004
    Messages : 265
    Par défaut
    arf (j'ai pas eu le temps de regarder avant désolé), merci pour ta réponse, mais comme je le craignais j'ai du mal m'exprimer...

    Effectivement, on utilise maven avec différentes conf (pour la dev, la prod, ...).
    Je parlais de configuration quand l'application est déployée, par exemple, nous utilisons actuellement un cache de 80000 objets, cette valeur est dans un fichier .properties. Elle est actuellement lue au démarrage de l'appli par une classe ConfigLoader. C'est cette classe qui est consultée à chaque fois que l'on veut connaitre une donnée de conf. Et si je veux modifier cette valeur, je dois redémarrer mon appli... Nous avons pas mal de valeur telle que celle ci (surtout pour la présentation : nombre d'élément à afficher par page, types d'éléments, ...). Et gràce à la bonne gestion de ce projet, yen a un peu partout (en base de donnée, dans des fichier de propriété, ...).

    Et je cherche donc à mettre en place une (ou plusieurs classes) qui permettraient de gérer toutes ces propriétés.

    Bon j'éspère que j'ai été un peu plus clair... Sinon ce n'est pas trés grave, je me rend compte que ce n'est pas la politique de ma société de faire des choses propres alors je passerai en mode usine à gaz

  4. #4
    ego
    ego est déconnecté
    Rédacteur

    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juillet 2004
    Messages
    1 883
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2004
    Messages : 1 883
    Billets dans le blog
    2
    Par défaut
    Si tu veux modifier à chaud ces données, il faut 2 choses :

    1- Un moyen de dire qu'elles ont changer
    2- Un moyen de les changer

    Pour le point 1, il faut créer un protocole de communication avec ton application = un composant que tu peux appeler spécifiquement pour cela. Tu peux utiliser des composants classiques type EJB, Serveur RMI ou encore passer par JMX
    Pour le point 2, tu as le choix de faire relire tes fichiers que tu as préalablement modifié soit tu parle directement à ton composant précédent en lui demandant de modifier les valeurs dans les autres composants qui utilisent ces valeurs.

    Bref, tout ceci doit être prévu à l'avance = il faut identifier un "cas d'utilisation" genre "Administrer le paramètres de configuration"

  5. #5
    Membre chevronné
    Homme Profil pro
    Développeur Java
    Inscrit en
    Avril 2004
    Messages
    265
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Avril 2004
    Messages : 265
    Par défaut
    Merci pour ta réponse (je commence à me faire comprendre )

    Citation Envoyé par ego
    Bref, tout ceci doit être prévu à l'avance = il faut identifier un "cas d'utilisation" genre "Administrer le paramètres de configuration"
    Voila, tout mon problème est la, c'est que rien n'a été prévu à l'avance... Chaque dévelopeur qui est passé sur l'appli à créé à sa façon une ou plusieurs propriétés sur divers supports...
    Donc moi je cherche (surtout) un pattern ou un truc du genre (genre façade mais elle deviendrais gigantesque... ) qui permettrait de proposer des méthodes "uniformes" et plus homogènes pour accéder à ces propriétés.

    Pour ce qui est de modifier les données à chaud, effectivement je pensais dans un premier temps faire appel à une servlet qui irait contrôler et mettre à jour ces données.

  6. #6
    ego
    ego est déconnecté
    Rédacteur

    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juillet 2004
    Messages
    1 883
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2004
    Messages : 1 883
    Billets dans le blog
    2
    Par défaut
    Mais ta façade peut être assez générique, elle n'a peut être pas besoin d'avoir autant de méthodes que de propriétés.
    Une méthode genre :

    setProperty(String prop,Object value);
    Object getProperty(String prop);

    avec une notion type "A.B.C" pour les noms de propriétés.

    Maintenant que je comprend mieux mais pas tout, peux-tu dire ce que tu veux faire exactement !?
    Veux-tu remplacer le code existant avec une API plus standardisée sans pour autant changer le code de tes petits copains ?

  7. #7
    Membre chevronné
    Homme Profil pro
    Développeur Java
    Inscrit en
    Avril 2004
    Messages
    265
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Avril 2004
    Messages : 265
    Par défaut
    Oui c'est à peu prés ça...

    Je voudrais mettre en place quelques choses que l'on puisse utiliser maintenant mais je ne veux pas (enfin surtout ne peux pas faute de temps) remettre tout à plat...

    Je crois qu'effectivement, je vais juste mettre en place une façade de ce type et voir ce que ça donne... Si ça ne suffit pas j'y reviendrais...

  8. #8
    Membre éprouvé
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 106
    Par défaut
    suis d'accord avec ego.
    Une facade dont l'implementation a chercher / valuer des propriétés dans une base de données, un XML voir même un fichier texte standard. Le tout c'est que ce fichier ne soit pas charger dans la runtimeview de ton appli afin qu'il puisse être rechargé à chaud.

    Enfin, tu crées une mini appli qui permet d'afficher la liste des variables et leur valeur d'en ajouter et de les modifiers.

    Tu peux même pousser le truc a ajouter de la sécu sur certaines variables. c'est de cette manière que l'on peut créer un système de variables de versionning.

    Example :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
         Variablerepository rep = Variablerepository.getInstance();
         Variable ivar = rep.get(("maVariable");
         String value = ivar.getValue();
    Et parellelement, il y'a une appli qui permet de modifier telle ou telle variable.

Discussions similaires

  1. Bonnes pratiques: fichier de projet et plugins
    Par Norris dans le forum Framework .NET
    Réponses: 3
    Dernier message: 15/06/2012, 16h03
  2. Projets informatique : les bonnes pratiques
    Par elitost dans le forum Débats sur le développement - Le Best Of
    Réponses: 345
    Dernier message: 18/10/2011, 16h08
  3. [Bonnes pratiques] Organisation du projet
    Par Sinclair dans le forum Django
    Réponses: 2
    Dernier message: 21/07/2009, 00h51
  4. Bonne pratique pour inclure source de projet open source ?
    Par joseph_p dans le forum Eclipse Java
    Réponses: 3
    Dernier message: 05/07/2007, 21h51

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