Comment lire un fichier de propriétés placées à l'extérieur de la guerre?
Je travaille sur une application web ces jours-ci. Qui utilise uniquement des jsp et des servlets. C'est une petite application. Droit maintenant, j'ai placé tous les détails de la source de données dans DAO classe utilitaire. Je veux placer ces informations dans un fichier de propriétés qui peuvent être placés à l'extérieur de la guerre, de sorte que, en fonction de l'environnement, nous pouvons modifier ces valeurs, sans y apporter de la guerre. Comment puis-je y parvenir?
J'ai modifier les propriétés dans le fichier de propriétés. Souhaitez placer le fichier de propriétés à un chemin d'accès relatif à la GUERRE. Je n'ai pas accès pour le dev et prod boîtes. Aussi je n'ai pas de lire le fichier de propriétés à la Servlet niveau j'ai envie de le lire dans une classe utilitaire qui est responsable de fournir la source de données. ServletContext et tous sont disponibles uniquement à la servlet.
Mise à jour de ma réponse à l'adresse de votre commentaire.
Mise à jour de ma réponse à l'adresse de votre commentaire.
OriginalL'auteur user779354 | 2011-06-01
Vous devez vous connecter pour publier un commentaire.
Fournir le nom du fichier à l'aide de contexte param ou java paramètre système.
1.Contexte Param
2.Paramètre Système
Si je suis correct, l'exigence a été de changer les accessoires dans le fichier , pas le fichier en tant que tel.
Koca Si c'était le cas, Même le paramètre système exige le changement dans le exécuter le fichier de script
vous avez raison, mais vous n'avez pas besoin de modifier le fichier war, c'est une question de goût..
OriginalL'auteur Ramesh PVK
C'est comment je fais ceci:
Ajouter les éléments suivants à context.xml fichier (dossier conf, dans l'installation de tomcat dir). vous pouvez modifier le nom de l'attribut; et en valeur de définir le chemin d'accès du dossier où vous avez des fichiers de propriétés.
Puis dans votre util classe, vous pouvez obtenir le fichier comme ceci: ("java:comp/env/config" remplacer "config" avec la valeur de l'attribut "name" vous avez utilisé dans l'context.xml)
Espère que cela vous aide à vous ou quelqu'un d'autre.
OriginalL'auteur damian
En fonction de votre serveur web, vous pouvez placer le fichier de propriétés dans un endroit qui est inclus dans le classpath. Par exemple, pour certaines versions de tomcat, qui serait
${TOMCAT_BASE}/shared/classes
. La webapp pouvez ensuite utiliser quelque chose comme ce qui suit pour lire le fichier et il sera automatiquement trouvés à cet endroit.Vous pouvez également le nom du fichier après votre webapp est installé nom et d'utiliser ce nom dans votre code lors du chargement du fichier dans le chemin de classe. De cette façon, vous pouvez avoir les fichiers de propriétés pour plusieurs webapps dans le répertoire partagé sans conflit les uns avec les autres.
Vous avez indiqué que vous n'avez pas accès à la ServletContext parce que vous voulez le code pour être dans une classe utilitaire. Une façon que vous pouvez contourner cette limitation consiste à enregistrer un ServletContextListener qui crée une instance de votre propriété lecteur de fichier (depuis, il a accès au contexte) et des registres afin que d'autres le code de l'utiliser. Quelque chose comme ce qui suit:
OriginalL'auteur RHSeeger
Vous devez donner l'emplacement du fichier java runtime propriété de votre conteneur web..
Tels que,
java -DmypropertyFile.location=c:/propertyfile.properties -jar yourContainer.jar
OriginalL'auteur Gursel Koca
Si vous utilisez Tomcat, vous pouvez ajouter toutes les propriétés que vous aimez le contexte, regardez la la documentation pour context.xml. Tous les serveurs d'applications ont leur propre façon de faire cela, de sorte que vous aurez à regarder autour pour des exemples de cela dans JBoss, Glassfish, etc..
Une autre, plus difficile, mais probablement la meilleure solution est d'utiliser Ressources JNDI.
OriginalL'auteur Karl-Bjørnar Øie
L'approche habituellement, j'ai pris est pour le programme de supposer que le fichier de configuration se trouve sous
%user.home%/.program/config.properties
.Si le fichier n'est pas trouvé (généralement sur la première course) une copie de la variable classpath de un "défaut" du fichier de configuration et placé là.
Par souci de flexibilité, que ce est généralement substituables à l'aide -Dconfig=chemin.
OriginalL'auteur Kris