Dernière modification : 19/01/2021

Externaliser les fichiers properties avec Tomcat 9

Dans cet article nous allons voir comment externaliser les fichiers properties avec Tomcat 9.

1. Introduction

Externaliser les fichiers de properties est intéressant pour séparer les différents environnements (dev / prod) sans pour autant avoir à modifier les fichiers du WAR ou de modifier les fichiers de properties une fois l'application déployée.

2. Utilisation du fichier server.xml

<Context docBase="NOM_APP" path="/" reloadable="true" source="org.eclipse.jst.jee.server:NOM_APP">
  <Resources>
    <PreResources className="org.apache.catalina.webresources.FileResourceSet"
            base="/opt/tomcat/properties/application.properties"
            webAppMount="/WEB-INF/classes/application.properties" />
  </Resources>
</Context>

Remarque : La variable NOM_APP est à remplacer par le nom de votre application.

Ici nous lions le fichier /opt/tomcat/properties/application.properties au fichier /WEB-INF/classes/application.properties de l'application, remplaçant l'ancien fichier de properties par le nouveau.

Cette solution est déconseillée depuis Tomcat 5 car le fichier server.xml n'est pris en compte qu'à partir d'un redémarrage du tomcat et donc de toutes les applications en cours. Pour pallier ce problème, le point suivant est à préférer.

3. Fichier context spécifique à l'application

Pour des raisons de facilité, nous supposerons que le fichier WAR se nomme ROOT.war afin que l'application soit disponible à la racine du site ( / ).

Dans le dossier $CATALINA_HOME/conf/Catalina/localhost, créer un fichier ROOT.xml (nom du fichier war). Dans ce fichier insérer les lignes suivantes :

<?xml version="1.0" encoding="UTF-8"?>
<Context>
  <Resources>
    <PreResources className="org.apache.catalina.webresources.FileResourceSet"
            base="/opt/tomcat/properties/application.properties"
            webAppMount="/WEB-INF/classes/application.properties" />
  </Resources>
</Context>

Ici nous lions le fichier /opt/tomcat/properties/application.properties au fichier /WEB-INF/classes/application.properties de l'application, remplaçant l'ancien fichier de properties par le nouveau.

La configuration est spécifique au war utilisé, donc il n'y a pas besoin de relancer le serveur tomcat pour avoir la nouvelle configuration chargée.

LauLem.com - Conditions Générales d'Utilisation - Informations Légales - Charte relative aux cookies - Charte sur la protection des données personnelles - A propos