Configurer weblogic pour se connecter à une queue TIBCO EMS

Cet article sera un peu moins rock & roll mais pourra peut-être être utile pour certains.
Je souhaite dans le contexte d’une application JEE hébergée sur weblogic consommer les messages d’une queue JMS hebergée sur TIBCO EMS.

Pre-requis

  • Il faut que la queue présente dans TIBCO EMS soit statique et non dynamique
  • Il faut que la queue EMS ait un nom JMDI
  • Il faut que les droits soient positionnés dans EMS

Dépendances

Il faut installer les JARS suivants dans le répertoire lib du domaine weblogic

  • jms.jar
  • jms-2.0.jar
  • tibcrypt.jar
  • tibemsd_sec.jar
  • tibjms.jar
  • tibjmsadmin.jar
  • tibjmsapps.jar
  • tibjmsufo.jar
  • tibrvjms.jar

Configuration weblogic

Il faut réaliser les actions suivantes :

Créer le module JMS et l’assigner sur le serveur managé

Dans ce module JMS, créer une queue distante et renseigner les informations suivantes :

Maintenant renseigner les informations suivantes :

  • Fabrique de contextes initiale JNDI: com.tibco.tibjms.naming.TibjmsInitialContextFactory
  • URL de connexion JNDI : Elle est au format tibjmsnaming://MONSERVEUR:7222
  • Identification : le mot de passe de l’utilisateur
  • Propriété JNDI : le login de l’utilisateur avec la clé java.naming.security.principal
  • Activer le ciblage par défaut

Ensuite, il faut spécifier la destination en indiquant le nom JNDI local et le nom JNDI spécifié sur EMS.

Enfin, il faut spécifier la fabrique de connexion.

sélectionner l’onglet « Fabrique de connexion » et cliquer sur « Nouveau »

Renseigner les informations suivantes :

  • Nom JNDI local : nom JNDI nécessaire au bean MDB pour envoyer les messages
  • Nom JNDI distant : nom JNDI configuré sur EMS
  • Identifiant / Mot de passe : les mêmes que précédemment

Au final vous devriez avoir ce fichier de configuration généré

<?xml version='1.0' encoding='UTF-8'?>
<weblogic-jms xmlns="http://xmlns.oracle.com/weblogic/weblogic-jms" 
			  xmlns:sec="http://xmlns.oracle.com/weblogic/security" 
			  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
			  xmlns:wls="http://xmlns.oracle.com/weblogic/security/wls" 
			  xsi:schemaLocation="http://xmlns.oracle.com/weblogic/weblogic-jms http://xmlns.oracle.com/weblogic/weblogic-jms/1.1/weblogic-jms.xsd">
  <foreign-server name="ForeignServer-0">
    <default-targeting-enabled>true</default-targeting-enabled>
    <foreign-destination name="ForeignDestination-0">
      <local-jndi-name>jms.Queue</local-jndi-name>
      <remote-jndi-name>queue.sample</remote-jndi-name>
    </foreign-destination>
    <foreign-connection-factory name="ForeignConnectionFactory-0">
      <local-jndi-name>jms.TibcoConnectionFactory</local-jndi-name>
      <remote-jndi-name>QueueConnectionFactory</remote-jndi-name>
      <username>weblogic</username>
      <password-encrypted>{AES}vD1uLZ</password-encrypted>
    </foreign-connection-factory>
    <initial-context-factory>com.tibco.tibjms.naming.TibjmsInitialContextFactory</initial-context-factory>
    <connection-url>tibjmsnaming://MONSERVEUR:7222</connection-url>
    <jndi-properties-credential-encrypted>{AES}/8v3owbSW</jndi-properties-credential-encrypted>
    <jndi-property>
      <key>java.naming.security.principal</key>
      <value>weblogic</value>
    </jndi-property>
  </foreign-server>
</weblogic-jms>
weblogic

Consommation des messages via un EJB MDB

@MessageDriven(mappedName = "jms.Queue", activationConfig = {
        @ActivationConfigProperty(propertyName = "acknowledgeMode",
                propertyValue = "Auto-acknowledge"),
        @ActivationConfigProperty(propertyName = "destinationType",
                propertyValue = "javax.jms.Queue"),
        @ActivationConfigProperty(propertyName = "connectionFactoryJndiName", propertyValue = "jms.TibcoConnectionFactory")
})
public class SampleMDBean implements MessageListener {
    @Override
    @TransactionAttribute(TransactionAttributeType.NOT_SUPPORTED)
    public void onMessage(Message message) {
      //
    }
}
jms

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *