Où mettre ses fichiers properties dans une webapp ? - Java - Programmation
Marsh Posté le 18-12-2002 à 11:37:55
perso on les mets direct dans WEB-INF, mais j'ai deja vu des projets ou ils créeaient un repertoire WEB-INF/etc et mettaient toute la config la dedans (properties + fichiers xml) et je trouve ca pas mal
Marsh Posté le 18-12-2002 à 11:40:35
je sais pas si c'est le plus propre mais moi je les mets dans WEB-INF/conf
pour moi tu utilises la bonne manière pour récupérer le flux (this.getClass().getResourceAsStream(...)) : comme ca , c'est le classloader de la classe qui est utilisé pour récupérer le fichier de properties.
exemple de chose à ne pas faire (oui c'est du déjà vu) : Object.class.getResourceAsStream(...)
ca ca va utiliser le classLoader de Object qui a toute les chance d'être le ClassLoader "racine" => dans un environnement multi-classloader (genre tomcat), ca va pas marcher du tout !!!
Marsh Posté le 18-12-2002 à 11:44:51
lorill a écrit : perso on les mets direct dans WEB-INF, mais j'ai deja vu des projets ou ils créeaient un repertoire WEB-INF/etc et mettaient toute la config la dedans (properties + fichiers xml) et je trouve ca pas mal |
C'est exactement ce que je fais, j'ai créé un répertoire /WEB-INF/config qui contient mes fichiers Properties et XML mais mon code java n'arrive pas à trouver les fichiers, j'essaie de faire:
Code :
|
mais à l'exécution, j'obtiens l'erreur suivante:
java.lang.NullPointerException
at java.io.Reader.<init>(Reader.java:61)
at java.io.InputStreamReader.<init>(InputStreamReader.java:80)
at java.util.Properties.load(Properties.java:189)
at com.ibm.hraccess.selfservice.util.ZDLookUp.run(ZDLookUp.java:115)
at java.lang.Thread.run(Thread.java:536)
qui m'indique que l'erreur a lieu sur la ligne
Code :
|
C'est donc que mon fichier Properties n'est pas correctement trouvé. Est-ce-que je dois appeler mon Props par
"Reglementation.properties" ?
"/config/Reglementation.properties" ?
"./config/Reglementation.properties" ?
J'essaie à eptu près tous les cas mais je trouve pas
Marsh Posté le 18-12-2002 à 12:17:43
Moi je place mes fichier à la racine de ma webapp, et j'utilise ça (dans ma classe étandant HttpServlet bien sûr !) :
Code :
|
Marsh Posté le 18-12-2002 à 14:00:53
El_Gringo a écrit : Moi je place mes fichier à la racine de ma webapp, et j'utilise ça (dans ma classe étandant HttpServlet bien sûr !) :
|
Oui c'est vrai que c'est une autre possibilité mais si je me rappelle bien, Mr Benou l'avait déconseillé car du coup ton fichier de Properties est accessible en saisissant l'URL dans ton navigateur
Marsh Posté le 18-12-2002 à 14:10:27
MachinBidule1974 a écrit : |
Accessible en lecture, oui. c gênant dans ton cas ? Dans le miens, absolument pas.
Marsh Posté le 18-12-2002 à 14:12:47
sinon, moi ce que j'ai fait c'est que je les ai mit dans le rep WEB-INF/conf et que je passe le chemin vers le fichier de properties en paramètres de la servelt dans le web.xml
Marsh Posté le 18-12-2002 à 14:13:07
El_Gringo a écrit : |
Et bien, un fichier de configuration accessible en lecture ça n'est pas trop gênant sauf si ton fichier contient des infos un peu sensibles, genre un mot de passe pour se connecter à un serveur SMTP, etc...
Mais comme j'aime bien les choses carrées, ça me semble pas top quand même...
Marsh Posté le 18-12-2002 à 14:19:07
on peut pas accéder à un truc dans le WEB-INF à partir du ServletContext.getRessourceAsStream ?
Marsh Posté le 18-12-2002 à 14:26:59
benou a écrit : on peut pas accéder à un truc dans le WEB-INF à partir du ServletContext.getRessourceAsStream ? |
J'ai pas fait le test mais il me semble que non. Ca me semblerait logique qu'une ressource au sens web soit obligatoirement située sous la racine de la webapp... Vais vérifier
Marsh Posté le 18-12-2002 à 14:43:31
benou a écrit : sinon, moi ce que j'ai fait c'est que je les ai mit dans le rep WEB-INF/conf et que je passe le chemin vers le fichier de properties en paramètres de la servelt dans le web.xml |
C pas bête...
Marsh Posté le 18-12-2002 à 14:44:30
MachinBidule1974 a écrit : |
Ben c'est loin d'être crade, cette méthode getRessourceAsStream est faite pour ce genre de trucs...
Marsh Posté le 18-12-2002 à 11:32:21
Salut,
Dans le cadre du développement d'une webapp, je me demande où il est le plus propre d'enregistrer ses fichiers Properties pour qu'ils puissent être accessibles par les classes Java facilement...
- Directement dans le répertoire contenant les classes ? Je pense pas puisqu'il est purgé dès que je reconstruis le projet
- Dans un sous-répertoire sous le répertoire racine des classes style /classes/Properties ?
- Directement sous /WEB-INF ?
- Dans un sous-répertoire style /WEB-INF/Properties ?
Idem, quel est le code le plus propre pour accéder à ces fichiers ? J'utilise actuellement un this.getClass().getResourceAsStream(...) mais j'aime pas trop cette manière de procéder. Quelqu'un a une autré idée ?
Merci d'avance