Accueil
> Non classé > Websphere MQ en JMS / JNDI
Websphere MQ en JMS / JNDI
Petit problème technique rencontré la semaine dernière : Configurer un logiciel pour utiliser Websphere MQ comme provider JMS via JNDI. En effet, le logiciel (propriétaire) ne propose pas d’instancier directement la ConnectionFactory mais demande une factory JNDI, une URL et un nom JNDI.
Après quelques recherches, j’ai trouvé un article chez IBM qui explique qu’il faut télécharger des support pacs (MS0B & ME01)
La factory à utiliser est « com.ibm.mq.jms.context.WMQInitialContextFactory »
L’url est de la forme « hostWebsphereMq:portManager/channel ». Par exemple : « 192.168.0.25:1414/SYSTEM.DEF.SVRCONN »
Le nom de la connectionFactory est le nom du manager MQ
Voici un exemple de code qui envoie un message texte dans Websphere MQ en JMS via JNDI.
/* Environement JNDI */
Properties env = new Properties();
/* Factory fournie par les support pacs */
env.put(Context.INITIAL_CONTEXT_FACTORY,
"com.ibm.mq.jms.context.WMQInitialContextFactory");
/* serveur:port/channel */
env.put(Context.PROVIDER_URL, "mymanager:1414/SYSTEM.DEF.SVRCONN");
/* Connexion JNDI */
Context context = new InitialContext(env);
/* Recherche de la connection factory (nom du manager) */
QueueConnectionFactory queueFactory = (QueueConnectionFactory) context.lookup("MYTSTA");
/* API JMS classique */
QueueConnection queueConnection = queueFactory.createQueueConnection();
QueueSession queueSession = queueConnection.createQueueSession(false, Session.AUTO_ACKNOWLEDGE);
Queue queue = queueSession.createQueue("TEST.QUEUE");
QueueSender queueSender = queueSession.createSender(queue);
TextMessage message = queueSession.createTextMessage();
message.setText("Hello World !");
queueSender.send(message);
queueSession.close();
Merci! Ça m’a vraiment aidé!