7.4.4. Activer la substitution de propriété des EJB et MDB dans une application
@ActivationConfigProperty
et @Resource
. La substitution de propriétés nécessite la configuration et les changements de code suivants :
- Vous devez activer la substitution de propriété dans le fichier de configuration du serveur JBoss EAP.
- Vous devez définir les propriétés système dans le fichier de configuration du serveur ou les passer comme arguments quand vous démarrez le serveur JBoss EAP.
- Vous devez modifier le code pour utiliser les variables de substitution.
Procédure 7.7. Implémenter la substitution de propriétés dans une application MDB
helloworld-mdb
fourni dans JBoss EAP 6.3 ou version supérieure. Cette section vous montre comment modifier le guide de démarrage rapide pour activer la substitution de propriété.
Configurer le serveur JBoss EAP pour activer la substituion de propriété.
Le serveur JBoss EAP doit être configuré pour activer la substitution de propriété. Pour cela, définir l'attribut<annotation-property-replacement>
qui se trouve dans le sous-systèmeee
du fichier de configuration du serveur àtrue
.- Sauvegarder le fichier de configuration du serveur. L'exemple de guide de démarrage rapide
helloworld-mdb
nécessite un profil complet pour les serveurs autonomes, donc il s'agit dustandalone/configuration/standalone-full.xml
. Si vous exécutez votre serveur dans un domaine géré, il s'agira du fichierdomain/configuration/domain.xml
. - Démarrer le serveur JBos EAP avec le profil complet.Dans Linux :Dans Windows :
EAP_HOME/bin/standalone.sh -c standalone-full.xml
EAP_HOME/bin/standalone.sh -c standalone-full.xmlEAP_HOME/bin/standalone.sh -c standalone-full.xml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow EAP_HOMEbin\standalone.bat -c standalone-full.xml
EAP_HOMEbin\standalone.bat -c standalone-full.xmlEAP_HOMEbin\standalone.bat -c standalone-full.xml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - Lancer l'interface CLI par la commande pour votre système d'exploitation.Dans Linux :Dans Windows :
EAP_HOME/bin/jboss-cli.sh --connect
EAP_HOME/bin/jboss-cli.sh --connectEAP_HOME/bin/jboss-cli.sh --connect
Copy to Clipboard Copied! Toggle word wrap Toggle overflow EAP_HOME\bin\jboss-cli.bat --connect
EAP_HOME\bin\jboss-cli.bat --connectEAP_HOME\bin\jboss-cli.bat --connect
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - Saisir la commande suivante pour activer la substitution de propriété d'annotation.
/subsystem=ee:write-attribute(name=annotation-property-replacement,value=true)
/subsystem=ee:write-attribute(name=annotation-property-replacement,value=true)
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - Vous devriez voir apparaître le résultat suivant :
{"outcome" => "success"}
{"outcome" => "success"}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - Réviser les changements apportés au fichier de configuration du serveur JBoss EAP. Le sous-système
ee
doit maintenant contenir l'XML suivant.<subsystem xmlns="urn:jboss:domain:ee:1.2"> <spec-descriptor-property-replacement>false</spec-descriptor-property-replacement> <jboss-descriptor-property-replacement>true</jboss-descriptor-property-replacement> <annotation-property-replacement>true</annotation-property-replacement> </subsystem>
<subsystem xmlns="urn:jboss:domain:ee:1.2"> <spec-descriptor-property-replacement>false</spec-descriptor-property-replacement> <jboss-descriptor-property-replacement>true</jboss-descriptor-property-replacement> <annotation-property-replacement>true</annotation-property-replacement> </subsystem>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
Définir les propriétés système.
Vous pouvez spécifier les propriétés du système dans le fichier de configuration du serveur ou vous pouvez les passer comme arguments de ligne de commande lorsque vous démarrez le serveur JBoss EAP. Les propriétés système définies dans le fichier de configuration de serveur ont la priorité sur celles passées sur la ligne de commande lorsque vous démarrez le serveur.- Vous devez définir les propriétés système dans le fichier de configuration.
- Démarrez le serveur JBoss EAP et le Management API comme indiqué dans les étapes précédentes.
- Utiliser la syntaxe de commande suivante pour configurer une propriété système dans le serveur JBoss EAP :
/system-property=PROPERTY_NAME:add(value=PROPERTY_VALUE)
/system-property=PROPERTY_NAME:add(value=PROPERTY_VALUE) /system-property=PROPERTY_NAME:add(value=PROPERTY_VALUE) /system-property=PROPERTY_NAME:add(value=PROPERTY_VALUE) /system-property=PROPERTY_NAME:add(value=PROPERTY_VALUE) /system-property=PROPERTY_NAME:add(value=PROPERTY_VALUE)
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Pour le guide de démarrage rapidehelloworld-mdb
, nous configurons les propriétés système suivantes :/system-property=property.helloworldmdb.queue:add(value=java:/queue/HELLOWORLDMDBPropQueue) /system-property=property.helloworldmdb.topic:add(value=java:/topic/HELLOWORLDMDBPropTopic) /system-property=property.connection.factory:add(value=java:/ConnectionFactory)
/system-property=property.helloworldmdb.queue:add(value=java:/queue/HELLOWORLDMDBPropQueue) /system-property=property.helloworldmdb.topic:add(value=java:/topic/HELLOWORLDMDBPropTopic) /system-property=property.connection.factory:add(value=java:/ConnectionFactory)
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - Réviser les changements apportés au fichier de configuration du serveur JBoss EAP. Les propriétés système suivantes doivent maintenant apparaître après les
<extensions>
.<system-properties> <property name="property.helloworldmdb.queue" value="java:/queue/HELLOWORLDMDBPropQueue"/> <property name="property.helloworldmdb.topic" value="java:/topic/HELLOWORLDMDBPropTopic"/> <property name="property.connection.factory" value="java:/ConnectionFactory"/> </system-properties>
<system-properties> <property name="property.helloworldmdb.queue" value="java:/queue/HELLOWORLDMDBPropQueue"/> <property name="property.helloworldmdb.topic" value="java:/topic/HELLOWORLDMDBPropTopic"/> <property name="property.connection.factory" value="java:/ConnectionFactory"/> </system-properties>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
- Passez les propriétés système comme arguments de ligne de commande quand vous démarrez le serveur JBoss EAP sous la forme d'un
-DPROPERTY_NAME=PROPERTY_VALUE
. Ce qui suit est un exemple de la façon dont on passe les arguments dans les propriétés système définies dans l'étape précédente.EAP_HOME/bin/standalone.sh -c standalone-full.xml -Dproperty.helloworldmdb.queuejava:/queue/HELLOWORLDMDBPropQueue -Dproperty.helloworldmdb.topic=java:/topic/HELLOWORLDMDBPropTopic -Dproperty.connection.factory=java:/ConnectionFactory
EAP_HOME/bin/standalone.sh -c standalone-full.xml -Dproperty.helloworldmdb.queuejava:/queue/HELLOWORLDMDBPropQueue -Dproperty.helloworldmdb.topic=java:/topic/HELLOWORLDMDBPropTopic -Dproperty.connection.factory=java:/ConnectionFactoryEAP_HOME/bin/standalone.sh -c standalone-full.xml -Dproperty.helloworldmdb.queuejava:/queue/HELLOWORLDMDBPropQueue -Dproperty.helloworldmdb.topic=java:/topic/HELLOWORLDMDBPropTopic -Dproperty.connection.factory=java:/ConnectionFactory
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
Modifier le code pour utiliser les substitutions de propriétés système.
Remplacer les valeurs d'annotation@ActivationConfigProperty
et@Resource
codées en dur par des substitutions pour les propriétés système nouvellement définies. Voici des exemples sur la façon de changer le guide de démarrage rapidehelloworld-mdb
pour qu'il utilise les substitutions de propriétés système nouvellements définies pour les annotations qui se trouvent dans le code source.- Modifier la valeur de propriété
@ActivationConfigProperty
destination
qui se trouve dans la classeHelloWorldQueueMDB
afin d'utiliser la substitution pour la propriété système. L'annotation@MessageDriven
devra ressembler à ceci :@MessageDriven(name = "HelloWorldQueueMDB", activationConfig = { @ActivationConfigProperty(propertyName = "destinationType", propertyValue = "javax.jms.Queue"), @ActivationConfigProperty(propertyName = "destination", propertyValue = "${property.helloworldmdb.queue}"), @ActivationConfigProperty(propertyName = "acknowledgeMode", propertyValue = "Auto-acknowledge") })
@MessageDriven(name = "HelloWorldQueueMDB", activationConfig = { @ActivationConfigProperty(propertyName = "destinationType", propertyValue = "javax.jms.Queue"), @ActivationConfigProperty(propertyName = "destination", propertyValue = "${property.helloworldmdb.queue}"), @ActivationConfigProperty(propertyName = "acknowledgeMode", propertyValue = "Auto-acknowledge") })
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - Modifier la valeur de propriété
@ActivationConfigProperty
destination
qui se trouve dans la classeHelloWorldTopicMDB
afin d'utiliser la substitution pour la propriété système. L'annotation@MessageDriven
devra ressembler à ceci :@MessageDriven(name = "HelloWorldQTopicMDB", activationConfig = { @ActivationConfigProperty(propertyName = "destinationType", propertyValue = "javax.jms.Topic"), @ActivationConfigProperty(propertyName = "destination", propertyValue = "${property.helloworldmdb.topic}"), @ActivationConfigProperty(propertyName = "acknowledgeMode", propertyValue = "Auto-acknowledge") })
@MessageDriven(name = "HelloWorldQTopicMDB", activationConfig = { @ActivationConfigProperty(propertyName = "destinationType", propertyValue = "javax.jms.Topic"), @ActivationConfigProperty(propertyName = "destination", propertyValue = "${property.helloworldmdb.topic}"), @ActivationConfigProperty(propertyName = "acknowledgeMode", propertyValue = "Auto-acknowledge") })
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - Modifier les annotations
@Resource
qui se trouvent dans la classeHelloWorldMDBServletClient
afin d'utiliser les substitutions de propriétés système. Le code devra ressembler à ceci :Copy to Clipboard Copied! Toggle word wrap Toggle overflow - Modifier le fichier
hornetq-jms.xml
pour pouvoir utiliser les valeurs de substitution de propriétés système.Copy to Clipboard Copied! Toggle word wrap Toggle overflow
- Déployer l'application. L'application utilisera maintenant les valeurs indiquées par les propriétés système comme valeurs de propriété pour
@Resource
et@ActivationConfigProperty
.