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

Développement Web en Java Discussion :

Manifest référençant un fichier de config


Sujet :

Développement Web en Java

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 69
    Points : 71
    Points
    71
    Par défaut Manifest référençant un fichier de config
    Je voudrais savoir pourquoi mon application web ne retrouve pas mon fichier conf.properties...
    J'ai une web-app, dans cette web-app, j'ai un répertoire lib contenant différent jars que j'ai créés (via ant). Chaque jar contient un manifest. L'un de ces manifest contient un attribut Class-Path.
    Le contenu de cet attribut est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Class-Path: config/conf.properties
    J'ai mis le fichier conf.properties à plusieurs endroits: à la racine de la web-app, sous web-inf...
    Mon programme doit lire le fichier conf.properties. Pour le récupérer je fais:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    InputStream confPropertiesFile = new FileInputStream(confPropertyFile);
    Mon confPropertiesFile est toujours null.

    Je ne peux pas utiliser le catalina.bat pour compléter mon classpath car la web-app va être déployée sur de mulitples serveurs d'application et les administrateurs ne veulent/savent/peuvent pas tous mettre à jour leur classpath. Donc je dois passer par les manifest.

    Mais... le fichier n'est jamais retrouvé...

    Donc plusieurs questions:
    1. y-a-til une solution alternative aux manifest et à la modification du catalina.bat?
    2. Le code dans mon manifest est-il correct? Où dois-je placer le fichier config/conf.properties pour qu'il soit lu?
    3. Mon code java est-il correct? J'ai essayé aussi avec les classloaders et j'ai des null malgré tout.
    4. Comme j'ai plusieurs manifest je voulais être sûr que mon manifest soit bien lu, et j'ai donc mis le code suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    			while (resources.hasMoreElements()) {
    			    try {
    			      Manifest manifest = new Manifest(resources.nextElement().openStream());
    			      Attributes attr = manifest.getMainAttributes();
    			      attr.getValue("Class-Path");
    			      if (value!=null) configClassPath=value;
    			    } catch (IOException E) {
    			      // handle
    			    }
    Et le manifest est bien lu. Je me demande si le class-path que je « set » ne serait pas effacé par les classpath des manifest des autres jars? Si c'est le cas, quelle pourrait être la solution, sachant que les jars ne sont pas tous de moi?
    5. Si j'inclus le properties dans mon jar, ça fonctionne. Mais je ne peux pas utiliser cette méthode, car le fichier de conf est destiné à être modifié et doit donc être accessible à l’extérieur de l’archive jar.

    Merci pour vos réponses

  2. #2
    Expert éminent
    Avatar de djo.mos
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    4 666
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 4 666
    Points : 7 679
    Points
    7 679
    Par défaut
    Salut,
    Tu peux placer le properties dans WEB-INF/classes, et y accéder via :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    UneClasse.class.getClassLoader().getResourceAsStream("fichier.properties");

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 69
    Points : 71
    Points
    71
    Par défaut Donc j'ai deux choix
    Merci beaucoup pour cette réponse.
    Donc il me semble que j'ai 2 choix:

    • soit mettre ma conf sous WEB-INF/classes
    • soit mettre ma conf à l'extérieur et modifier à la main le classpath


    Je crois comprendre que le manifest.mf Class-Path ne sert qu'à référencer des jars et pas des fichiers .properties. Exact?
    ce que j'aurais voulu c'est référencer mon conf.properties depuis mon manifest.mf.

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 69
    Points : 71
    Points
    71
    Par défaut
    Finalement j'ai choisi la solution consistant à modifier le classpath. Ainsi chacun mettra son fichier de config là où il le souhaite.

    Dommage que le manifest.mf ne permette pas cela.

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

Discussions similaires

  1. [jdbc] fichier de config
    Par calimero82 dans le forum JDBC
    Réponses: 14
    Dernier message: 21/06/2005, 13h48
  2. [Erreur]impossible de trouver le fichier de config du moteur
    Par julietteste dans le forum Bases de données
    Réponses: 5
    Dernier message: 10/05/2005, 18h34
  3. [C#] Section appSettings du fichier Web.config
    Par pbo dans le forum ASP.NET
    Réponses: 2
    Dernier message: 01/02/2005, 10h12
  4. [struts] utilisation de plusieurs fichiers de config
    Par Boosters dans le forum Struts 1
    Réponses: 4
    Dernier message: 25/03/2004, 10h04
  5. fichier de config: refuse tcpip_socket=true.
    Par phil25 dans le forum Installation
    Réponses: 1
    Dernier message: 04/01/2004, 15h55

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