Configuration conditionnelle Java (web.xml) - Développement / Production
J'ai la configuration suivante dans mon web.xml
fichier dans un Printemps application:
<session-config>
<cookie-config>
<name>mycookie</name>
<http-only>true</http-only>
<secure>true</secure>
</cookie-config>
</session-config>
Le problème est: le <secure>true</secure>
applique le cookie à envoyer via HTTPS uniquement, et dans ma machine de développement, je n'ai pas configuré HTTPS. Cependant, cette configuration est indispensable dans l'environnement de production.
Existe-t - il un moyen de rendre cette configuration sensible à l'environnement-c'est-à-dire false
pour le développement et true
pour les versions officielles/de production?
2 answers
Si vous utilisez Maven (que je conseille), vous pouvez utiliser les profils avec maven-guerre-plugin. Vous pouvez spécifier différents web.xml
dans chacun de ces profils (vous pouvez donc en avoir un pour l'environnement prod et un autre pour dev). Voici un exemple pour vous
<properties>
<webXmlPath>path/to/your/dev/xml</webXmlPath>
</properties>
<profiles>
<profile>
<id>prod</id>
<properties>
<webXmlPath>path/to/prod/webXml</webXmlPath>
</properties>
</profile>
</profiles>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>${war-plugin.version}</version>
<configuration>
<webXml>${webXmlPath}</webXml>
</configuration>
</plugin>
</plugins>
</build>
Maintenant, chaque build aura par défaut web.xml
avec les paramètres de développement. Lorsque vous souhaitez le changer en build de production, exécutez simplement
mvn clean install -Pprod
La solution était très simple en utilisant une propety:
<secure>${session.cookie.secure}</secure>
Dans mon fichier de développement .properties
j'ai ajouté:
session.cookie.secure=false
Et dans test / production, je peux le définir sur true