7.4.4. Activer la substitution de propriété des EJB et MDB dans une application


Red Hat JBoss EAP vous permet maintenant d'activer la substitution de propriétés dans les EJB et les MDB à l'aide des annotations @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

Les exemples de code suivants sont basés sur le guide de démarrage rapide 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é.
  1. 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ème ee du fichier de configuration du serveur à true.
    1. 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 du standalone/configuration/standalone-full.xml. Si vous exécutez votre serveur dans un domaine géré, il s'agira du fichier domain/configuration/domain.xml.
    2. Démarrer le serveur JBos EAP avec le profil complet.
      Dans Linux :
      EAP_HOME/bin/standalone.sh -c standalone-full.xmlEAP_HOME/bin/standalone.sh -c standalone-full.xml
      Copy to Clipboard Toggle word wrap
      Dans Windows :
      EAP_HOMEbin\standalone.bat -c standalone-full.xmlEAP_HOMEbin\standalone.bat -c standalone-full.xml
      Copy to Clipboard Toggle word wrap
    3. Lancer l'interface CLI par la commande pour votre système d'exploitation.
      Dans Linux :
      EAP_HOME/bin/jboss-cli.sh --connectEAP_HOME/bin/jboss-cli.sh --connect
      Copy to Clipboard Toggle word wrap
      Dans Windows :
      EAP_HOME\bin\jboss-cli.bat --connectEAP_HOME\bin\jboss-cli.bat --connect
      Copy to Clipboard Toggle word wrap
    4. Saisir la commande suivante pour activer la substitution de propriété d'annotation.
      /subsystem=ee:write-attribute(name=annotation-property-replacement,value=true) 
      Copy to Clipboard Toggle word wrap
    5. Vous devriez voir apparaître le résultat suivant :
      {"outcome" => "success"}
      Copy to Clipboard Toggle word wrap
    6. 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>
      Copy to Clipboard Toggle word wrap
  2. 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.
      1. Démarrez le serveur JBoss EAP et le Management API comme indiqué dans les étapes précédentes.
      2. 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) 
        Copy to Clipboard Toggle word wrap
        Pour le guide de démarrage rapide helloworld-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)
        Copy to Clipboard Toggle word wrap
      3. 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>
        Copy to Clipboard Toggle word wrap
    • 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:/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 Toggle word wrap
  3. 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 rapide helloworld-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.
    1. Modifier la valeur de propriété @ActivationConfigProperty destination qui se trouve dans la classe HelloWorldQueueMDB 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") })
      
      Copy to Clipboard Toggle word wrap
    2. Modifier la valeur de propriété @ActivationConfigProperty destination qui se trouve dans la classe HelloWorldTopicMDB 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") })
      Copy to Clipboard Toggle word wrap
    3. Modifier les annotations @Resource qui se trouvent dans la classe HelloWorldMDBServletClient afin d'utiliser les substitutions de propriétés système. Le code devra ressembler à ceci :
      @Resource(mappedName = "${property.connection.factory}")
      private ConnectionFactory connectionFactory;
      
      @Resource(mappedName = "${property.helloworldmdb.queue}")   
      private Queue queue;
      
      @Resource(mappedName = "${property.helloworldmdb.topic}")
      private Topic topic;
      
      Copy to Clipboard Toggle word wrap
    4. Modifier le fichier hornetq-jms.xml pour pouvoir utiliser les valeurs de substitution de propriétés système.
      <?xml version="1.0" encoding="UTF-8"?>
      <messaging-deployment xmlns="urn:jboss:messaging-deployment:1.0">
          <hornetq-server>
              <jms-destinations>
                  <jms-queue name="HELLOWORLDMDBQueue">
                      <entry name="${property.helloworldmdb.queue}"/>
                  </jms-queue>
                  <jms-topic name="HELLOWORLDMDBTopic">
                      <entry name="${property.helloworldmdb.topic}"/>
                  </jms-topic>
              </jms-destinations>
          </hornetq-server>
      </messaging-deployment>
      Copy to Clipboard Toggle word wrap
  4. 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.
Retour au début
Red Hat logoGithubredditYoutubeTwitter

Apprendre

Essayez, achetez et vendez

Communautés

À propos de la documentation Red Hat

Nous aidons les utilisateurs de Red Hat à innover et à atteindre leurs objectifs grâce à nos produits et services avec un contenu auquel ils peuvent faire confiance. Découvrez nos récentes mises à jour.

Rendre l’open source plus inclusif

Red Hat s'engage à remplacer le langage problématique dans notre code, notre documentation et nos propriétés Web. Pour plus de détails, consultez le Blog Red Hat.

À propos de Red Hat

Nous proposons des solutions renforcées qui facilitent le travail des entreprises sur plusieurs plates-formes et environnements, du centre de données central à la périphérie du réseau.

Theme

© 2025 Red Hat