La Lecture Des Ressources De L'Application Web
Fond
Le développement d'une application web simple (Eclipse + JBoss + Apache Tomcat) pour générer des fichiers XML.
Problème
Le "Business" de la liste des requêtes sur la base de données, et la Colonne "Cluster" de la liste des requêtes de la base de données à l'aide de la sélection "Domaine d'activités". Ces deux sont des requêtes uniques que sont stockés les fichiers texte externes.
Les fichiers sont actuellement stockés dans les emplacements suivants:
- WebContent/META-INF/entreprises-secteurs.sql
- WebContent/META-INF/colonne-clusters.sql
Ceux-ci sont ensuite utilisés pour ensemencer PreparedStatement
s.
Code Source
La méthode pour lire le code SQL peut ressembler à:
private String getSQL() {
String result = "";
try {
BufferedReader br = open( "business-areas.sql" );
String line = null;
while( (line = br.readLine()) != null ) {
result += line;
}
br.close();
}
catch( Exception e ) {
e.printStackTrace();
}
return result;
}
Questions
Je voudrais savoir:
- Quelles sont les meilleures pratiques pour le stockage de ces actifs pour le déploiement d'une application web? (Ce qui est, est
META-INF
un bon emplacement, ou estMETA-INF/resources
préféré?) - Ce que l'Api recommanderiez-vous pour lire le contenu du fichier? (Qui est, comment puis-je écrire le
open
méthode afin qu'il trouve les fichiers à ouvrir?)
J'ai déjà JNDI en place pour établir la connexion de base de données, mais plutôt de ne pas utiliser JNDI pour obtenir des poignées pour les fichiers, si possible.
Sites Connexes
- http://blogs.oracle.com/alexismp/entry/web_inf_lib_jar_meta
- http://www.avajava.com/tutorials/lessons/where-do-i-put-resources-in-my-maven-project.html
- http://docs.jboss.org/jbossweb/3.0.x/config/context.html
- http://tomcat.apache.org/tomcat-4.0-doc/catalina/docs/api/org/apache/naming/resources/FileDirContext.html
Merci!
OriginalL'auteur Dave Jarvis | 2011-03-03
Vous devez vous connecter pour publier un commentaire.
Au bon endroit (et aussi la pratique courante) est à placer sous votre
source
répertoire, qui sera alors sera compilé dansWEB-INF/classes
répertoire. Je ne suis pas sûr de ce que vous entendez par "répertoire classes est volatile" dans votre réponse à @Dave, mais c'est la façon dont la plupart (si pas tous) Java web apps stocker des choses.WEB-INF/classes
n'est pas seulement pour les classes Java. Il est commun de voir les propriétés d'enregistrement de fichier (log4j), Hibernate et Spring fichiers XML stockés soussource
répertoire et vous pouvez accéder en toute sécurité les fichiers en utilisant quelque chose comme ceci:-Quelques informations utiles sur l'utilisation de META-INF: Quel est le but de META-INF?
OriginalL'auteur limc
J'ai eu des préoccupations semblables à celles de Dave Jarvis sur le mélange ressources avec
classes
etlib
, j'ai donc fait quelques tripoter et a trouvé cette solution:J'ai placé mes fichiers de ressources dans
WEB-INF/resources
. Ensuite, pour charger, j'ai utilisé ceci:Je ne sais pas qui à l'aide d'un
..
est une bien meilleure solution, mais mes fichiers sont au moins à ne pas mélanger avec des classes ou des bocaux.OriginalL'auteur RustyTheBoyRobot
Je l'avais mis dans WEB-INF/classes, ou intégrez-les à l'intérieur de votre application.jar qui ira à l'intérieur de WEB-INF/lib. Ensuite, vous pouvez les charger depuis le classpath comme expliqué ici et ici
Mieux encore, si vous utilisez maven, la meilleure pratique consiste à mettre ces types de fichiers dans le dossier src/main/resources puis maven va prendre soin de cela pour vous.
OriginalL'auteur Upgradingdave