2013-02-18 5 views
0

Je développe un projet de printemps et je viens de rencontrer de sérieux problèmes avec le chargement des fichiers de configuration XML dans junit (mais ils sont accessibles depuis les contrôleurs web) - impossible de charger les fichiers XML.printemps où stocker les fichiers de configuration xml

j'ai énuméré mon classpath (dans les tests JUnit) et a constaté que, parmi les autres, il y a 2 répertoires inclus:

/var/www/Java/lyricsBase/build/web/WEB-INF/classes/ 
/var/www/Java/lyricsBase/build/test/classes/ 

Il n'y a qu'un seul fichier que je veux inclure dans mon test:

  • /WEB-INF/lyricsBaseApp-servlet.xml

et il importe 3 fichiers ci-dessous:

  • /WEB-INF/hibernate.xml
  • /WEB-INF/dataSource.xml
  • /WEB-INF/beans.xml

Je peux voir clairement que le déploiement de mon projet sur tomcat copie les fichiers confg vers /var/www/Java/lyricsBase/build/web/WEB-INF/ABC.xml mais ce répertoire ne se trouve pas dans le chemin de classe, /var/www/Java/lyricsBase/build/web/WEB-INF/classes est inclus à la place. J'ai lu que WEB-INF ne devrait pas être dans le classpath (c'est juste un principe Java EE). OK - alors où dois-je mettre mes fichiers de configuration pour y accéder facilement à la fois des contrôleurs Web et des tests de junit? Des bonnes pratiques?

+0

Lorsque vous utilisez Maven, que de jeter un oeil à cette question: http://stackoverflow.com/questions/13859755/dans-la-sortie-de-principal-configuration-files-when-using-maven – Ralph

Répondre

2

Placez les fichiers de configuration sous WEB-INF/classes sur le paquet war, et ils seront chargés dans le classpath. Envisagez de déployer votre code en tant que guerre éclatée, afin que les fichiers de configuration puissent être facilement modifiés.

Également envisager d'utiliser le projet de guerre Maven pour votre emballage. Si vous le faites, vous pouvez simplement placer vos fichiers de configuration sous src/main/resources sous le code source, et ils seront empaquetés dans WEB-INF/classes pour vous.

+0

Placer des fichiers XML source sous WEB-INF/classes semble être une solution de contournement sale. Maven semble être la meilleure solution alors. – ducin

+0

Une autre approche que j'ai vu est d'ajouter un emplacement supplémentaire à votre chemin de classe tomcat et d'y placer votre fichier de configuration (besoin de creuser le manuel de tomcat pour le faire) – gerrytan

1

J'ai eu le même problème et depuis lors j'ai commencé à les mettre dans META-INF sous ressources. C'est là que les projets de modèles de printemps qui ne fonctionnent pas dans Tomcat les ont mis et ont semblé résoudre mes problèmes.

+0

mais j'utilise Tomcat ... et je ne peux pas voir META-INF dans mon classpath. – ducin

Questions connexes