Red Hat Training

A Red Hat training course is available for Red Hat JBoss Enterprise Application Platform

2.5.4. Expressions imbriquées

Les expressions peuvent être imbriquées, ce qui permet une utilisation plus avancée des expressions au lieu de valeurs fixes. Le format d'une expression imbriquée ressemble à celui d'une expression normale, mais une expression est imbriquée dans l'autre, comme par exemple :

Exemple 2.15. Transactions imbriquées

${system_value_1${system_value_2}}
Les expressions imbriquées sont évaluées de façon récursive, donc l'expression inner est d'abord évaluée, puis outer. Les expressions imbriquées sont autorisées partout où elles sont autorisées, à l'exception des commandes CLI de gestion.
En ce qui concerne les expressions normales, les sources prises en charge pour résoudre les expressions imbriquées sont : propriétés système, variables d'environnement et de l'archivage sécurisé. Pour les déploiements uniquement, la source peut correspondre à des propriétés qui sont listées dans un fichier META-INF/jboss.properties qui se trouve dans l'archive de déploiement. Dans un EAR ou dans un autre type de déploiement qui prenne en charge les sous-déploiements, la résolution est scoped à tous les sous-déploiements si META-INF/jboss.properties se trouve dans le déploiement externe (par ex. EAR) et est scoped à un sous-déploiement si META-INF/jboss.properties est dans l'archive d'un sous-déploiement (par ex. un WAR à l'intérieur d'une EAR).

Exemple 2.16. Utiliser une expression imbriquée dans un fichier de configuration

Une application real-life d'une expression imbriquée se trouve dans une définition de source de données. Si le mot de passe utilisé dans une définition de source de données est masqué, voici la ligne de texte qui en résulte dans la définition de la source de données :
<password>${VAULT::ds_ExampleDS::password::1}</password>
Pour une expression imbriquée, la valeur de ds_ExampleDS peut être remplacée par une propriété système. Si une propriété système datasource_name reçoit comme valeur ds_ExampleDS, la ligne de texte de la définition de source de données pourra ressembler à ceci :
<password>${VAULT::${datasource_name}::password::1}</password>
JBoss EAP doit tout d'abord évaluer l'expression ${datasource_name}, puis l'ajouter à une plus grande expression et évaluer l'expression qui en résulte. L'avantage de cette configuration est que le nom de la source de données se soustrait de la configuration fixe
Les expressions peuvent également être récursives quand une expression est résolue en expression qui est résolue à son tour. Les expressions imbriquées et récursives représentent une forme d'indirection. Notez que les expressions récursives ne sont pas permises dans les commandes d'interface CLI.

Exemple 2.17. Expression récursive

Pour l'exemple ci-dessus, vous pouvez utiliser l'expression ${foo} qui résolue en expression ${VAULT::ds_ExampleDS::password::1}, elle-même résolue par une valeur contenue dans l'archivage sécurisé : secret.