24.10. Configurer un adaptateur de ressources JMS standard à utiliser avec un fournisseur JMS de tierce partie


Résumé

JBoss EAP 6 peut être configuré pour fonctionner avec des fournisseurs tiers de JMS, cependant tous les fournisseurs JMS ne produisent pas un adaptateur de ressources JMS JCA pour l'intégration avec les plateformes d'applications Java. Cette procédure couvre les étapes requises pour configurer l'adaptateur de ressources JMS générique inclus dans JBoss EAP 6 pour se connecter à un fournisseur JMS. Dans cette procédure, Tibco EMS 6.3 est utilisé comme un exemple de fournisseur JMS, mais d'autres fournisseurs JMS peuvent avoir besoin d'une configuration différente.

Important

L'adaptateur de ressources JMS JCA générique ne devrait servir que lorsqu'un fournisseur JMS ne fournit pas son propre adaptateur de ressources. Avant d'utiliser l'adaptateur de ressources JMS générique, vous devez d'abord vérifier auprès du fournisseur JMS pour savoir s'il possède son propre adaptateur de ressources qui puisse être utilisé avec JBoss EAP 6.
Conditions préalables

Cette procédure suppose qu'un serveur de fournisseur JMS est déjà configuré et prêt à l'emploi. Les binaires nécessaires à l'implémentation du fournisseur JMS seront nécessaires. Vous devez également connaître les valeurs des propriétés de fournisseur JMS suivantes :

  • PROVIDER_HOST:PROVIDER_PORT: le nom d'hôte et le numéro de port du serveur de fournisseur JMS.
  • PROVIDER_CONNECTION_FACTORY: le nom de l'usine de connexion déployée sur le serveur de fournisseur JMS. Doit être XA.
  • PROVIDER_QUEUE, PROVIDER_TOPIC: les noms des files d'attente et des sujets qui se trouvent sur le serveur de fournisseurs JMS qui doivent être utilisés.

Procédure 24.10. Configuration d'un adaptateur de ressources générique JMS

  1. Créer une implémentation ObjectFactory pour la liaison de files d'attentes et de sujets JNDI :
    1. En utilisant le code ci-dessous comme modèle, remplacer les informations serveur par les valeurs de serveur du fournisseur JMS.
      import java.util.Hashtable;
      import java.util.Properties;
       
      public class RemoteJMSObjectFactory implements ObjectFactory {
       
        private Context context = null;
       
        public RemoteJMSObjectFactory() {
        }
       
        public Object getObjectInstance(Object obj, Name name, Context nameCtx,
            Hashtable<?, ?> environment) throws Exception {
          try {
            String jndi = (String) obj;
       
            final Properties env = new Properties();
            env.put(Context.INITIAL_CONTEXT_FACTORY,
                "com.tibco.tibjms.naming.TibjmsInitialContextFactory");
            env.put(Context.URL_PKG_PREFIXES, "com.tibco.tibjms.naming");
            env.put(Context.PROVIDER_URL, "tcp://TIBCO_HOST:TIBCO_PORT");
       
            context = new InitialContext(env);
            Object o = context.lookup(jndi);
       
            return o;
          } catch (NamingException e) {
            e.printStackTrace();
            throw e;
          }
        }
      }
      
      Copy to Clipboard Toggle word wrap
    2. Compiler le code ci-dessus, et sauvegarder le fichier de classe résultant dans un fichier JAR nommé remoteJMSObjectFactory.jar
  2. Créer un module genericjms pour votre instance JBoss EAP 6 :
    1. Créer la structure de répertoire suivante : EAP_HOME/modules/system/layers/base/org/jboss/genericjms/provider/main
    2. Copier le fichier remoteJMSObjectFactory.jar dans EAP_HOME/modules/system/layers/base/org/jboss/genericjms/provider/main
    3. Copier les binaires requis pour l'implémentation JMS du fournisseur dans EAP_HOME/modules/system/layers/base/org/jboss/genericjms/provider/main. Pour Tibco EMS, les binaires requis sont tibjms.jar et tibcrypt.jar du répertoire /lib de l'installation Tibco.
    4. Créer un fichier module.xml dans EAP_HOME/modules/system/layers/base/org/jboss/genericjms/provider/main comme ci-dessous, en énumérant les fichiers JAR des étapes précédentes comme ressources :
      <module xmlns="urn:jboss:module:1.1" name="org.jboss.genericjms.provider"> 
        <resources> 
            <resource-root path="tibjms.jar"/> 
            <resource-root path="tibcrypt.jar"/>
            <resource-root path="remoteJMSObjectFactory.jar"/>
        </resources> 
      
         <dependencies> 
            <module name="javax.api"/> 
            <module name="javax.jms.api"/> 
        </dependencies> 
      </module>
      Copy to Clipboard Toggle word wrap
  3. Ajouter le module JMS générique comme une dépendance pour tous les déploiements en tant que modules globaux.

    Note

    Dans cette procédure, EAP_HOME/standalone/configuration/standalone-full.xml est utilisé comme fichier de configuration JBoss EAP 6.
    Dans EAP_HOME/standalone/configuration/standalone-full.xml, sous <subsystem xmlns="urn:jboss:domain:ee:1.1">,ajouter:
    <global-modules>
      <module name="org.jboss.genericjms.provider" slot="main"/>
      <module name="org.jboss.common-core" slot="main"/>
    </global-modules>
    Copy to Clipboard Toggle word wrap
  4. Remplacer l'adaptateur de ressources HornetQ par défaut par l'adaptateur de ressources générique.
    Dans EAP_HOME/standalone/configuration/standalone-full.xml, remplacer <subsystem xmlns="urn:jboss:domain:ejb3:1.4"> <mdb>, par:
    <mdb>
      <resource-adapter-ref resource-adapter-name="org.jboss.genericjms"/>
      <bean-instance-pool-ref pool-name="mdb-strict-max-pool"/>
    </mdb>
    Copy to Clipboard Toggle word wrap
  5. Ajouter les liaisons pour vos files d'attente et sujets JMS en tant qu'objets selon les besoins.
    Dans EAP_HOME/standalone/configuration/standalone-full.xml, sous <subsystem xmlns="urn:jboss:domain:naming:1.3">, ajouter les liaisons, remplaçant PROVIDER_QUEUE et PROVIDER_TOPIC selon les besoins :
    <bindings>
      <object-factory name="PROVIDER_QUEUE" module="org.jboss.genericjms.provider" class="org.jboss.qa.RemoteJMSObjectFactory"/>
      <object-factory name="PROVIDER_TOPIC" module="org.jboss.genericjms.provider" class="org.jboss.qa.RemoteJMSObjectFactory"/>
    </bindings>
    Copy to Clipboard Toggle word wrap
  6. Dans EAP_HOME/standalone/configuration/standalone-full.xml, ajouter la configuration d'adaptateur de ressources générique dans <subsystem xmlns="urn:jboss:domain:resource-adapters:1.1">.
    Remplacer PROVIDER_CONNECTION_FACTORY, PROVIDER_HOST, et PROVIDER_PORT par les valeurs du fournisseur JMS.
    <resource-adapters>
      <resource-adapter id="org.jboss.genericjms">
        <module slot="main" id="org.jboss.genericjms"/>
        <transaction-support>NoTransaction</transaction-support>
        <connection-definitions>
          <connection-definition class-name="org.jboss.resource.adapter.jms.JmsManagedConnectionFactory" jndi-name="java:/jms/PROVIDER_CONNECTION_FACTORY" pool-name="PROVIDER_CONNECTION_FACTORY">
            <config-property name="JndiParameters">
              java.naming.factory.initial=com.tibco.tibjms.naming.TibjmsInitialContextFactory;java.naming.provider.url=tcp://PROVIDER_HOST:PROVIDER_PORT
            </config-property>
            <config-property name="ConnectionFactory">
              PROVIDER_CONNECTION_FACTORY
            </config-property>
            <security>
              <application/>
            </security>
          </connection-definition>
        </connection-definitions>
      </resource-adapter>
    </resource-adapters>
    Copy to Clipboard Toggle word wrap
Résultat

L'adaptateur de ressources JMS est maintenant configuré et prêt à l'utilisation.

Quand on crée un nouveau message MDB (Message Driven Bean), il faut un code (ci-dessous) similaire pour utiliser l'adaptateur de ressources. Remplacer PROVIDER_CONNECTION_FACTORY, PROVIDER_HOST, et PROVIDER_PORT par les valeurs du fournisseur JMS.
En option, l'exemple ci-dessous configure également une connexion sécurisée pour Tibco EMS en spécifiant les propriétés d'utilisateur user et de mot de passe password (remplacer les valeurs de propriété en fonction des besoins).
@MessageDriven(activationConfig = { 
  @ActivationConfigProperty(propertyName = "destinationType", propertyValue = "javax.jms.Queue"), 
  @ActivationConfigProperty(propertyName = "jndiParameters", propertyValue = "java.naming.factory.initial=com.tibco.tibjms.naming.TibjmsInitialContextFactory;java.naming.provider.url=tcp://PROVIDER_HOST:PROVIDER_PORT")
  @ActivationConfigProperty(propertyName = "destination", propertyValue = "PROVIDER_QUEUE"), 
  @ActivationConfigProperty(propertyName = "connectionFactory", propertyValue = "PROVIDER_CONNECTION_FACTORY"),
  @ActivationConfigProperty(propertyName = "user", propertyValue = "USER"),
  @ActivationConfigProperty(propertyName = "password", propertyValue = "PASSWORD"),
})

@ResourceAdapter("org.jboss.genericjms")
public class SampleMdb implements MessageListener { 
  @Override

    public void onMessage(Message message) { 
    
    } 

}
Copy to Clipboard Toggle word wrap
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