2.4.2. Remplacement de propriété basée descripteur

La configuration d'application - par exemple, les paramètres de connexion de la source de données - varient normalement entre le développement, les tests, et les déploiements de production. Cette variation est parfois accommodée par les build system scripts, car la spécification Java EE ne contient pas de méthode pour externaliser ces configurations.
Dans JBoss Enterprise Application Platform 6, vous pouvez utiliser le remplacement de propriété basée descripteur pour gérer la configuration en externe.
Le remplacement de propriété basée descripteur remplace les propriétés basées sur des descripteurs, ce qui vous permet de supprimer les hypothèses concernant l'environnement de l'application et la chaîne de construction. Les configurations spécifiques à l'environnement peuvent être spécifiées dans les descripteurs de déploiement à la place des annotations ou des build system scripts. Vous pouvez fournir la configuration dans les fichiers ou en tant que paramètres en ligne de commande.
Le remplacement de propriétés basées descripteur est activé globalement par standalone.xml ou domain.xml :
<subsystem xmlns="urn:jboss:domain:ee:1.1">
  <spec-descriptor-property-replacement>
    true
  </spec-descriptor-property-replacement>
  <jboss-descriptor-property-replacement>
    true
  </jboss-descriptor-property-replacement>
</subsystem>
Les descripteurs Java EE de ejb-jar.xml et de persistence.xml peuvent être remplacés. Désactivé par défaut.
Le remplacement de descripteur spécifique à Java est activé par défaut. Les descripteurs peuvent être remplacés dans :
  • jboss-ejb3.xml
  • jboss-app.xml
  • jboss-web.xml
  • *-jms.xml
  • *-ds.xml
Par exemple, avec un bean ayant l'annotation suivante :
 @ActivationConfigProperty(propertyName = "connectionParameters", propertyValue = "host=192.168.1.1;port=5445")
Avec le remplacement de propriété basée descripteur, connectionParameters peut être spécifié en ligne de commande par :
./standalone.sh -DconnectionParameters='host=10.10.64.1;port=5445'
Pour accomplir la même chose par les propriétés système :
<activation-config>
  <activation-config-property>
    <activation-config-property-name>
      connectionParameters
      </activation-config-property-name>
    <activation-config-property-value>
      ${jms.connection.parameters:'host=10.10.64.1;port=5445'}
    </activation-config-property-value>
  </activation-config-property>
</activation-config>
${jms.connection.parameters:'host=10.10.64.1;port=5445'} permet aux paramètres de connexion d'être remplacés par un paramètre fourni en ligne de commande, tout en donnant une valeur par défaut.