Utiliser Websphere MQ en JMS avec OSB

Utiliser un bus de services tel qu’ Oracle Service Bus vous permet d’intégrer entre elles des briques logicielles hétérogènes: bases de données, SAP, site web, etc. Cette intégration est permise grâce aux nombreux standards supportés par le bus et ses connecteurs: web services, JMS, JDBC, etc.
Ce billet vise à mettre en avant les capacités d’intégration d’Oracle Service Bus au niveau JMS. Notamment, nous allons voir quel mécanisme peut nous permettre d’utiliser des files de message Websphere MQ avec OSB.

Voici les étapes principales à suivre:

  • Télécharger et installer le client Websphere MQ
  • Renseigner l’annuaire JNDI du client Websphere MQ avec les files de message et les fabriques de connexion du serveur MQ à utiliser
  • Configurer un Foreign Server sur le weblogic hébergeant Oracle Service Bus et le faire pointer sur l’annuaire JNDI du client Websphere MQ
  • Mapper les ressources de l’annuaire du client Websphere MQ dans l’annuaire JNDI du weblogic hébergeant Oracle Service Bus grâce au Foreign Server

Installation du client Websphere MQ (ici version 6 sur Linux):

  • Télécharger l’archive d’installation ici
  • Se connecter en root sur les serveurs OSB
  • Décompresser l’archive d’installation
  • Lancer le script mqlicense.sh
  • Installer les RPM (le client se trouve alors dans /opt/mqm)
  • Créer un répertoire /opt/mqm/jndidir ayant comme propriétaire l’utilisateur mqm
  • Modifier la partie INITIAL_CONTTEXT_FACTORY du fichier JMSAdmin.config:
    #INITIAL_CONTEXT_FACTORY=com.sun.jndi.ldap.LdapCtxFactory
    INITIAL_CONTEXT_FACTORY=com.sun.jndi.fscontext.RefFSContextFactory
    #INITIAL_CONTEXT_FACTORY=com.ibm.ejs.ns.jndi.CNInitialContextFactory
    #INITIAL_CONTEXT_FACTORY=com.ibm.websphere.naming.WsnInitialContextFactory
  • Modifier la partie PROVIDER du fichier JMSAdmin.config:
    #PROVIDER_URL=ldap://polaris/o=ibm,c=us
    PROVIDER_URL=file:/opt/mqm/jndidir
    #PROVIDER_URL=iiop://localhost/

Renseigner l’annuaire JNDI du client Websphere MQ:

  • Toujours en root, se positionner dans le répertoire /opt/mqm/java/bin
    cd /opt/mqm/java/bin
  • Initialiser les variables d’environnement
    . ./setjmsenv
  • Lancer le prompt du client MQ
    ./JMSAdmin
  • Définir une fabrique de connexion par Queue Manager MQ
    def qcf(MYMQCF) qmanager(myqmanager) hostname(myhostname) port(myport) transport(CLIENT)
  • Référencer chaque file de messages du serveur MQ
    def q(MYQ) queue(MYQ) qmanager(myqmanager) persistence(PERS)

Configurer un Foreign Server sur le weblogic hébergeant OSB

  • Ouvrir une session d’édition dans la console d’administration OSB
  • Aller dans la section Services/Messaging/JMSModules
  • Créer un nouveau module JMS ou utiliser un existant
  • Créer un Foreign Serveur dans ce module avec les valeurs suivantes
    JNDI Initial Context Factory: com.sun.jndi.fscontext.RefFSContextFactory
    JNDI Connection URL : file:/opt/mqm/jndidir

Mapper les ressources de l’annuaire du client Websphere MQ dans l’annuaire JNDI du weblogic hébergeant OSB:

  • Créer autant de Foreign Connection Factory que de fabrique de connexion définie dans l’annuaire du client MQ
  • Créer autant de Foreign Destination que de file de messages définie dans l’annuaire du client MQ

Vous êtes désormais prêt à utiliser le transport JMS d’Oracle Service Bus pour lire et écrire dans vos files de message MQ en toute transparence 🙂 Ce mécanisme nécessite donc un peu configuration côté serveur mais il permet de s’affranchir complètement de la technologie utilisée.
Nous aborderons d’autres mécanismes d’intégration proposés par Oracle Service Bus dans de prochains billets 😉
A bientôt!

2 réflexions sur “Utiliser Websphere MQ en JMS avec OSB”

  1. s’il vous plait
    je veux du code java pour creer une queue connexion factory de type point a point avec websphere MQ
    MERCI pour votre aide

Les commentaires sont fermés.