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 estJ'ai mis le fichier conf.properties à plusieurs endroits: à la racine de la web-app, sous web-inf...
Code : Sélectionner tout - Visualiser dans une fenêtre à part Class-Path: config/conf.properties
Mon programme doit lire le fichier conf.properties. Pour le récupérer je fais:
Mon confPropertiesFile est toujours null.
Code : Sélectionner tout - Visualiser dans une fenêtre à part InputStream confPropertiesFile = new FileInputStream(confPropertyFile);
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:
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?
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 }
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
Partager