Démarrage en mode service Windows du serveur mqweb

Depuis la version 9.0.1, IBM MQ propose de nouvelles fonctions, comme par exemple :

  • MQ Console (Client léger GUI d’administration MQ)
  • REST API Admin (Administration MQ via des API))
  • REST API Messaging (Dépôt et consommation de messages via des API)

Ces nouvelles fonctions s’appuie sur le serveur mqweb. I s’agit d’un serveur d’application, basé sur WebSphere Liberty, fournit avec les binaires MQ.

Pour utiliser ces nouvelles fonctions, il faut configurer mais surtout démarrer le serveur mqweb, et s’assurer qu’il redémarre après chaque reboot du serveur.

Sous Linux, il est facile, par exemple avec systemd, de créer un service qui va démarrer un Queue Manager ou le serveur mqweb.
Sous Windows, la commande crtmqm offre la possibilité de créer un service Windows pour démarrer un Queue Manager.
Ce type d’option n’existe pas pour le serveur mqweb, il faut donc installer un mécanisme pour le remplacer. Le principe est de lancer la commande strmqweb.bat via un service Windows.

Windows propose nativement un outil pour créer un service : sc
La syntaxe est la suivante :

sc.exe [] create [] [type= {own | share | kernel | filesys | rec | interact type= {own | share}}] [start= {boot | system | auto | demand | disabled | delayed-auto}] [error= {normal | severe | critical | ignore}] [binpath= ] [group= ] [tag= {yes | no}] [depend= ] [obj= { | }] [displayname= ] [password= ]

Par défaut, le service va démarrer sous le compte LocalSystem, ce qui n’est peut-être pas souhaitable. L’idéal est de créer un compte de service pour le serveur mqweb qui sera membre du groupe mqm local.
Il faut lancer une première fois la commande sc avec le paramètre create, puis une seconde fois avec le paramètre description :

sc create <nom_court_du_service> start= <type_démarrage> error= ignore binpath= <chemin_du_strmqweb.bat> obj= <compte_de_service> password= <mot_de_passe> displayname= <nom_long_du_service>
sc description <nom_court_du_service> "IBM MQ - MQWeb"

Exemple :
Si IBM MQ est installé en D:\MQ930\bin, que le compte de service est umqweb, avec comme mot de passe Pangolin23, on peut créer un service Windows nommé MQWeb :

sc create MQWeb start= auto error= ignore binpath= D:\MQ930\bin\strmqweb.bat obj= umqweb password= Pangolin23 displayname= "IBM MQ - mqweb"
sc description MQWeb "IBM MQ - MQWeb"

Ce n’est pas une solution parfaite, car la commande strmqweb n’est pas prévue pour être lancée en mode service, et ne renvoie pas son statut.
Le démarrage du service en mode interactif génère une erreur 1503, et le service apparait comme arrêté. Pourtant la commande dspmqweb indique que le serveur mqweb est démarré.

Sachant que le serveur mqweb est basé sur Liberty, et que Liberty permet de démarrer des serveurs en mode service, il existe probablement une solution plus “propre”. Idéalement, cette solution de démarrage en mode service Windows devrait être prévue dans le produit, de la même manière qu’elle existe pour un Queue Manager. Mais ce n’est pas le cas pour l’instant, peut-être dans une version à venir ?

D’ici là, cette article devrait vous aider à automatiser le démarrage du serveur mqweb.