Où mettre ses fichiers properties dans une webapp ?

Où mettre ses fichiers properties dans une webapp ? - Java - Programmation

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

Reply

Marsh Posté le 18-12-2002 à 11:32:21   

Reply

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

Reply

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 !!!

Reply

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 :
  1. InputStream is = null;
  2. // Chargement de la réglementation en mémoire
  3. Properties properties = new Properties();
  4. try {
  5. is = this.getClass().getResourceAsStream("Reglementation.properties" );
  6. properties.load(is);
  7. } catch (IOException ioe) {
  8. LOGGER.error("Impossible de lire le fichier Reglementation.properties !", ioe);
  9. return;
  10. }


 
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 :
  1. properties.load(is);


 
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  :??:

Reply

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 :
  1. getServletContext().getRessourceAsStream("\MonFichier.properties" );
  2. // ne pas oublier le '\'

Reply

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 !) :

Code :
  1. getServletContext().getRessourceAsStream("\MonFichier.properties" );
  2. // ne pas oublier le '\'




 
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

Reply

Marsh Posté le 18-12-2002 à 14:10:27    

MachinBidule1974 a écrit :


 
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


 
Accessible en lecture, oui. c gênant dans ton cas ? Dans le miens, absolument pas.

Reply

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

Reply

Marsh Posté le 18-12-2002 à 14:13:07    

El_Gringo a écrit :


 
Accessible en lecture, oui. c gênant dans ton cas ? Dans le miens, absolument pas.


 
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...
 
 :hello:

Reply

Marsh Posté le 18-12-2002 à 14:19:07    

on peut pas accéder à un truc dans le WEB-INF à partir du ServletContext.getRessourceAsStream ?

Reply

Marsh Posté le 18-12-2002 à 14:19:07   

Reply

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

Reply

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...

Reply

Marsh Posté le 18-12-2002 à 14:44:30    

MachinBidule1974 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...
 
 :hello:  


 
Ben c'est loin d'être crade, cette méthode getRessourceAsStream est faite pour ce genre de trucs...

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed