Configuration conditionnelle Java (web.xml) - Développement / Production


J'ai la configuration suivante dans mon web.xmlfichier 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?

Author: Jens Piegsa, 2015-10-20

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
 4
Author: Petr Mensik, 2015-10-20 21:09:59

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

 4
Author: Pedro Affonso, 2015-10-21 10:34:41