OVH Cloud OVH Cloud

chargement de ficheir .properties en dehors du répertoire classes

3 réponses
Avatar
Vinz
salut,

je sais que mon problème (le chargement de fichiers) est assez récurrent,
mais je n'ai pas trouvé de solutions dans mon cas précis. J'ai une webapp
(ma_webapp) qui contient un répertoire "conf" avec mes fichiers .properties.
Mes classes sont logiquement dans le répertoire "ma_webapp/WEB-INF/classes/"
. Le problème c'est que je n'arrive pas à charger mes fichiers de conf
depuis l'endroit où ils sont (j'utilise
getClass().getResourceAsStream("mon_fichier_conf.properties")). J'y arrive
si je les mets dans le répertoire "classes", ce que j'aimerai éviter. J'en
arrive donc à me demander si ce que je veux faire est possible, ou si toute
ressource chargée doit être dans le répertoire "classes" (les exemples que
j'ai trouvés sont généralement foutus comme ça).

merci d'avance

--
Vincent

3 réponses

Avatar
Jean Bernard Root
Vinz wrote:

salut,

je sais que mon problème (le chargement de fichiers) est assez récurrent,
mais je n'ai pas trouvé de solutions dans mon cas précis. J'ai une webapp
(ma_webapp) qui contient un répertoire "conf" avec mes fichiers .properties.
Mes classes sont logiquement dans le répertoire "ma_webapp/WEB-INF/classes/"
. Le problème c'est que je n'arrive pas à charger mes fichiers de conf
depuis l'endroit où ils sont (j'utilise
getClass().getResourceAsStream("mon_fichier_conf.properties")). J'y arrive
si je les mets dans le répertoire "classes", ce que j'aimerai éviter. J'en
arrive donc à me demander si ce que je veux faire est possible, ou si toute
ressource chargée doit être dans le répertoire "classes" (les exemples que
j'ai trouvés sont généralement foutus comme ça).


Avec les conteneur de servlet et les applets, vous ne maitrisez pas
l'endroit d'où seront chargés vos fichiers de configuration. Les
concepteurs de java ont donc eu la "bonne" idée d'utiliser le
ClassLoader pour charger les fichiers de configuration
(getResourceAsStream).

Cette approche est parfaite quand ces fichiers sont très proches du code
et ne nécessitent pas de changement lors de l'installation ...

Pour les autres cas, j'utilise personellement l'approche suivante :

fichier .properties à l'extérieur de l'environnement de l'appli, chargé
via une ressource de configuration sur Context de la servlet. Donc
getContext().getInitParameter ("configFile"); puis je charge ce fichier
tout simplement avec les API de java.util.Properties.

On peu imaginer des choses assez siouxes comme des configurations qui se
rechargent à chaque changement du fichier, ne nécéssitant pas de
redémarrer le conteneur à chaque édition du fichier.

j'aimerais aussi savoir comment les autres gèrent ce problème !

Avatar
Bernard Koninckx
Ca m'intéresse aussi mais pour une application StandAlone

Bernard

"Vinz" a écrit dans le message de news:
c7d82j$3h8$
salut,

je sais que mon problème (le chargement de fichiers) est assez récurrent,
mais je n'ai pas trouvé de solutions dans mon cas précis. J'ai une webapp
(ma_webapp) qui contient un répertoire "conf" avec mes fichiers
.properties.

Mes classes sont logiquement dans le répertoire
"ma_webapp/WEB-INF/classes/"

. Le problème c'est que je n'arrive pas à charger mes fichiers de conf
depuis l'endroit où ils sont (j'utilise
getClass().getResourceAsStream("mon_fichier_conf.properties")). J'y arrive
si je les mets dans le répertoire "classes", ce que j'aimerai éviter. J'en
arrive donc à me demander si ce que je veux faire est possible, ou si
toute

ressource chargée doit être dans le répertoire "classes" (les exemples que
j'ai trouvés sont généralement foutus comme ça).

merci d'avance

--
Vincent




Avatar
Guillaume Carré
Le problème c'est que je n'arrive pas à charger mes fichiers de conf
depuis l'endroit où ils sont (j'utilise
getClass().getResourceAsStream("mon_fichier_conf.properties")).


private static final String CONF_DIR = "conf";

getClass().getResourceAsStream(CONF_DIR + File.separator +
"mon_fichier_conf.properties");

ca doit marcher ca...


--
Guillaume Carré