Définir des queue et queue connection factory dans un annuaire JNDI en flat file (com.sun.jndi.fscontext.RefFSContextFactory) et les utiliser depuis le client JMS.
Installer IBM WebSphere MQ (MQ Series) sous Debian avec l'utilitaire alien
Une fois MQ Series installé, on doit, pour y accéder via l'API JMS, définir dans l'annuaire JNDI les objets queue, queue connection factory, et les objets équivalents pour les topic.Cette page décrit comment effectuer les bind dans JNDI de ces objets et l'utilisation du fichier .bindings de l'annuaire JNDI sous forme de fichier plat, par le client JMS, dans le cadre d'une utilisation d'MQ Series en dehors du serveur d'applications WebSphere Application Server (WAS).
L'utilisation de JNDI avec MQSeries présentée ici est compatible avec MQSeries 5.3 et MQSeries 6.0 sous Linux et Windows.
JNDI, JMS, JMSAdmin, com sun jndi fscontext reffscontextfactory, ctx lookup, flat file, fichier .bindings, lookup, annuaire, jmsadmin, répertoire /var/mqm, annuaire JNDI, JMSAdmin.config, RefFSContextFactory, LDAP, websphere mq, mq series, channel mq series, Linux, Debian.
Modifier le fichier JMSAdmin.config
Ajouter des objets dans l'annuaire JNDI de MQ Series
Créer un channel serveur MQSeries
Utiliser le fichier .bindings créé par l'utilitaire JMSAdmin
Inconvénients de l'annuaire JNDI en flat file
C'est un peu l'équivalent de runmqsc quand on configure JMS sur MQSeries.
JMSAdmin utilise un fichier de configuration JMSAdmin.config qui se trouve dans le même répertoire.
INITIAL_CONTEXT_FACTORY=com.sun.jndi.fscontext.RefFSContextFactory
PROVIDER_URL=file:/var/mqm
Les autres lignes du fichier JMSAdmin.config qui concernent INITIAL_CONTEXT_FACTORY et PROVIDER_URL restent commentées.On utilise ici JNDI en "flat file", c'est à dire que l'annuaire JNDI se trouve dans un fichier plat.
L'autre façon de faire consiste à utiliser un annuaire LDAP pour enregistrer les objets MQSeries, par exemple avec OpenLDAP.
On ne décrit pas ici comment utiliser JNDI via un annuaire LDAP.
jess:/opt/mqm/java/bin> JMSAdmin
5648-C60, 5724-B41, 5655-F10 (c) Copyright IBM Corp. 2002. All Rights Reserved.
Starting Websphere MQ classes for Java(tm) Message Service Administration
InitCtx> DEFINE QCF(MYQCF) HOSTNAME(172.17.15.10) PORT(3129) TRANSPORT(client) QMANAGER(fourmond) CHANNEL(SYSTEM.DEF.SVRCONN)
InitCtx> DEFINE Q(MYQUEUE) QMANAGER(fourmond) QUEUE(MYQUEUE)
InitCtx> end
On vient de créer dans l'annuaire JNDI:
SYSTEM.DEF.SVRCONN.
runmqsc.runmqsc mqseries (pour un qmgr nommé mqseries):
define channel(MYCHANNEL) CHLTYPE(SVRCONN) MCAUSER('mqm')
Puis avec JMSAdmin (ou JMSAdmin.bat sous Windows):
define QCF(MYQCF) hostname(172.17.15.10) port(3129) transport(client) qmanager(mqseries) channel(MYCHANNEL)
Cette création de channel MQSeries fonctionne sous Linux.Pour définir un channel MQ Series sous Windows, on utilisera:
define channel(MYCHANNEL) CHLTYPE(SVRCONN) MCAUSER('MUSR_MQADMIN')
Pour utiliser le fichier .bindings du coté client, il suffit de le placer dans un répertoire utilisateur (à transférer en ASCII, c'est un fichier texte), disons /home/myuser/.
Ensuite on positionne les paramètres suivants dans l'environnement du client JMS:
INITIAL_CONTEXT_FACTORY=com.sun.jndi.fscontext.RefFSContextFactory
PROVIDER_URL=file:/home/myuser
On positionnera alors les propriétés suivantes dans une Hashtable à passer en paramètre au constructeur de la classe javax.naming.InitialContext:
Context.INITIAL_CONTEXT_FACTORY
Context.PROVIDER_URL
de la façon suivante:
java.util.Hashtable env = new Hashtable();
env.put(javax.naming.Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.fscontext.RefFSContextFactory");
env.put(javax.naming.Context.PROVIDER_URL, "file:/home/myuser");
javax.naming.InitialContext context = new javax.naming.InitialContext(env);
Si l'on doit utiliser plusieurs providers JMS dans le même applicatif Java, la façon portable de faire consiste à placer les valeurs des propriétés Context.INITIAL_CONTEXT_FACTORY et Context.PROVIDER_URL dans un fichier .properties Java ou sur la ligne de commande java via -Dname=value.Si le client se trouve sur la machine serveur, on gardera /var/mqm.
Voir aussi Configurer xinetd pour IBM WebSphere MQ (MQ Series)
et Configurer inetd pour IBM WebSphere MQ.
| Modifié le: vendredi 18.06.2010 à 17:09:15 | © P-Y Fourmond, 2005-2009 |