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"?utm_source=rss&utm_medium=rss
xmlns:sec="http://xmlns.oracle.com/weblogic/security"?utm_source=rss&utm_medium=rss
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"?utm_source=rss&utm_medium=rss
xmlns:wls="http://xmlns.oracle.com/weblogic/security/wls"?utm_source=rss&utm_medium=rss
xsi:schemaLocation="http://xmlns.oracle.com/weblogic/weblogic-jms?utm_source=rss&utm_medium=rss http://xmlns.oracle.com/weblogic/weblogic-jms/1.1/weblogic-jms.xsd">?utm_source=rss&utm_medium=rss
<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>
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) {
//
}
}