Utiliser des descripteurs de déploiement Java EE pour définir les références d'environnement

Cette règle marque les éléments Context <Environment> trouvés dans le fichier META-INF/context.xml et qui doivent être transformés en éléments <env-entry> dans le fichier WEB-INF/web.xml.

Apache Tomcat permet la définition des éléments Context <Environment> aux emplacements suivants :

Etant donné que l'outil de migration n'a pas forcément accès au répertoire de configuration de Tomcat, il ne marque les éléments Context <Environment> que dans le fichier META-INF/context.xml. Vous pouvez copier les informations Context <Environment> définies à d'autres emplacements dans le fichier META-INF/context.xml pour que l'outil puisse les traiter.

Si un fichier WEB-INF/web.xml existe dans le projet Web :

Les éléments Context <Environment> sont marqués si l'une des conditions suivantes est remplie :

Un correctif rapide pour cette règle est disponible dans le scanner de source. Le correctif rapide ajoute au fichier web.xml un nouvel élément <env-entry> qui représente l'élément Context <Environment>, s'il n'existe pas déjà dans le fichier web.xml. Si l'entrée existe, elle est mise à jour.

Si le fichier WEB-INF/web.xml n'existe pas :

Tous les éléments Context <Environment> sont marqués.

Le correctif rapide crée un fichier WEB-INF/web.xml qui inclut les éléments <env-entry> appropriés si la version du projet Web est Java EE 5 ou une version ultérieure. Il signale une erreur si la version du projet Web est J2EE 1.4 ou une version ultérieure.

Par exemple, prenez un fichier META-INF/context.xml dont le contenu est le suivant :
<Environment
description="Déclenchement car il n'existe pas"
name="newEntry"
override="false"
type="java.lang.String" value="abc123"/>
<Environment
description="Déclenchement car la valeur est différente"
name="contextEnvString_1"
override="false"
type="java.lang.String"
value="new Value"/>
<Environment
description="Déclenchement car le type est différent"
name="contextEnvString_2"
override="false"
type="java.lang.Integer"
value="123"/>
<Environment
description="Pas de déclenchement car le remplacement a pour valeur true."
name="contextEnvString_3"
override="true"
type="java.lang.Integer"
value="123"/>

et le fichier web.xml suivant dans l'application :

<env-entry>
<description>Déclenchement car la valeur est différente</description>
<env-entry-name>contextEnvString_1</env-entry-name>
<env-entry-type>java.lang.String</env-entry-type>
<env-entry-value>ancienneValeur</env-entry-value>
</env-entry>

<env-entry>
<description>Déclenchement car le type est différent</description>
<env-entry-name>contextEnvString_2</env-entry-name>
<env-entry-type>java.lang.String</env-entry-type>
<env-entry-value>123</env-entry-value>
</env-entry>

<env-entry>
<description>Pas de déclenchement car le remplacement a pour valeur true.</description>
<env-entry-name>contextEnvString_3</env-entry-name>
<env-entry-type>java.lang.Integer</env-entry-type>
<env-entry-value>123456789</env-entry-value>
</env-entry>

Une fois le correctif appliqué, le fichier web.xml est mis à jour et son contenu est le suivant :

<env-entry>
<description>Déclenchement car la valeur est différente</description>
<env-entry-name>contextEnvString_1</env-entry-name>
<env-entry-type>java.lang.String</env-entry-type>
<env-entry-value>nouvelle valeur</env-entry-value>
</env-entry>

<env-entry>
<description>Déclenchement car le type est différent</description>
<env-entry-name>contextEnvString_2</env-entry-name>
<env-entry-type>java.lang.Integer</env-entry-type>
<env-entry-value>123</env-entry-value>
</env-entry>

<env-entry>
<description>Pas de déclenchement car le remplacement a pour valeur true.</description>
<env-entry-name>contextEnvString_3</env-entry-name>
<env-entry-type>java.lang.Integer</env-entry-type>
<env-entry-value>123456789</env-entry-value>
</env-entry>

<env-entry>
<description>Déclenchement car il n'existe pas</description>
<env-entry-name>nouvelleEntrée</env-entry-name>
<env-entry-type>java.lang.String</env-entry-type>
<env-entry-value>abc123</env-entry-value>
</env-entry>