Je ne parviens pas à configurer une application Web dans Tomcat 7. Dans mon fichier WAR, il existe un fichier de propriétés myApp/WEB-INF/classes/myProps.props
, qui contient les propriétés propres à l'environnement. J'essaie de remplacer ce fichier de configuration sur le serveur afin que le même fichier WAR soit déployé dans plusieurs environnements.
J'ai entendu dire qu'il y avait un moyen de faire cela en utilisant des fichiers de configuration de remplacement dans Tomcat/conf/Catalina/myApp
. C’est la méthode que j’ai du mal à comprendre.
De plus, myApp.war
est l’un des nombreux systèmes exécutés sur le même serveur Tomcat et il ne s’exécute pas en tant qu’hôte local. Je veux pouvoir résoudre ce problème pour plusieurs des applications Web.
Server version: Apache Tomcat/7.0.23
Server built: Nov 20 2011 07:36:25
Server number: 7.0.23.0
OS Name: Linux
Votre Tomcat/conf/Catalina/<Host>
peut contenir des descripteurs de contexte qui vous permettent de configurer de nombreuses choses, y compris la définition des "entrées d'environnement", accessibles depuis Java via JNDI. Il y a beaucoup de façons de l'utiliser. Personnellement, je définis une entrée d'environnement qui est le chemin du système de fichiers vers mon fichier de propriétés. Mon application est conçue pour vérifier cette entrée, et si elle n'existe pas, recherchez le fichier sur le chemin de classe. Ainsi, dans dev, nous avons les propriétés dev sur le chemin de classe, mais lorsque nous construisons et déployons, nous le pointons vers un fichier externe.
Il existe une bonne documentation pour la configuration d'un contexte sur le site Web de Tomcat. Voir la section Définition d'un contexte pour plus de détails sur la création du fichier et l'emplacement de ce dernier.
Par exemple, si votre hôte s'appelle myHost
et que votre application est un fichier war nommé myApp.war
dans le répertoire webapps
, vous pouvez créer Tomcat/conf/Catalina/myHost/myApp.xml
avec le contenu suivant:
<Context>
<Environment name="configurationPath" value="/home/Tomcat/myApp.properties" type="Java.lang.String"/>
</Context>
Ensuite, à partir de votre code, vous feriez une recherche JNDI sur Java:comp/env/configurationPath
(95% de certitude ici) pour obtenir cette valeur de chaîne.
Vous pouvez essayer de placer votre configuration (fichier de propriétés) dans Apache Tomcat\lib dans un fichier JAR et de la supprimer de l'application Web. Lorsque le chargeur de classes de Tomcat ne trouvera pas votre configuration dans une application Web, il essaiera de le trouver dans le répertoire "lib". Vous pouvez donc externaliser votre configuration en déplaçant simplement la configuration dans le répertoire lib global (partagé entre d’autres applications Web).
Je viens d'ajouter un script setenv.bat
ou setenv.sh
dans le dossier bin
de Tomcat. Définissez la variable classpath
comme
set CLASSPATH=my-propery-folder