Créer un serveur d’application de webservices sur IBM i
mer 21 septembre 2022IBM i dispose depuis plusieurs versions d’une fonctionnalité intégrée pour exposer des programmes et des requêtes SQL en services Web (SOAP ou REST) via Integrated Web Services (IWS). Cet article montre comment créer et démarrer un serveur d’application de webservices sur IBM i à partir de l’admin HTTP, avec quelques bonnes pratiques à garder en tête. Le tutoriel s’appuie sur IBM Web Administration for i et ne nécessite pas de stack Java séparée.
Prérequis et contexte
Pourquoi un serveur de webservices sur IBM i ?
Les services Web intégrés permettent d’exposer des programmes ILE RPG, COBOL ou SQL comme webservice consommables par un front‑end web, une application Java/.NET, une API REST, etc., en restant au cœur du système IBM i. Cela évite d’exporter les données via des batchs ou des CSV, et favorise une architecture plus moderne tout en gardant la logique métier côté i.
L’Integrated Web Services Server (IWS) repose sur un serveur HTTP (souvent *ADMIN) et un sous‑système dédié pour exposer les services SOAP/REST.
Vérifications avant de commencer
Avant de lancer la création du serveur, assure‑toi que :
- L’option Services Web intégrés est installée sur ton système (souvent via un package spécifique selon la version IBM i).
- Le serveur TCP/IP est actif (
STRTCP) et le port d’administration HTTP (par défaut 2001) est accessible. - Un profil disposant des droits d’administration IBM Web Administration for i est disponible (profil équipouvoirs
*SECOFRou rôle spécifique).
Les exemples ci‑dessous sont illustrés pour V7R3.
Démarrer le serveur Admin HTTP
Via Navigator for i
- Depuis un navigateur, ouvrir l’URL de l’admin HTTP :
https://<votre_IBMi>:2001
(ouhttp://si tu n’utilises pas SSL).
- Sur un navigateur web(ou par ACS lien vers Navigator for i), saisissez l’url http(s)://votre_IBMi:2001
On arrive sur cette page :

- Aller dans Réseau/Serveurs/Serveurs TCP/IP, faite clic droit sur la ligne administration Admin


Soit en ligne de commande
Saisir sur l’IBM i :
STRTCPSVR SERVER(*HTTP) HTTPSVR(*ADMIN)
Créer un serveur de services Web (IWS)
Principes de base
Une fois le serveur Admin HTTP actif, tu peux créer un serveur de services Web (IWS) qui encapsulera les webservices. Ce serveur est associé à une instance HTTP (souvent *ADMIN ou une nouvelle instance dédiée). Il fournit une URL de base (http://ibmi:port/...) et génère automatiquement un WSDL pour chaque service installé.
Étapes dans IBM Web Administration for i







Exposer un programme ou une requête en service
Ajouter un nouveau service
- Dans l’onglet Manage, sélectionner le serveur de services Web que tu viens de créer.
- Cliquer sur Deploy New Service.

- Choisir le type de webservices REST ou SOAP
- Choisir le type de service :
- Programme ILE RPG ou COBOL : sélectionner un programme objet existant (RPGLE, COBOL) et définir le chemin vers celui-ci.

- Instruction SQL : encapsuler une requête SQL dans un service Web (utile pour des vues métier ou des requêtes simples).

L’assistant te propose alors de définir les noms des paramètres, leurs types (entier, décimal, alphanumérique, etc.) et les correspondances avec les champs du programme ou de la requête.
Génération du WSDL et de l’URL
Une fois le service installé, le serveur génère :
- Un WSDL accessible via une URL de type :
http://ibmi:port/wsdl/monServiceWeb.wsdl - Une URL de test (parfois accessible directement dans l’interface) pour tester le service avec un client SOAP ou un outil type SoapUI.
Pour les services SQL, tu peux aussi utiliser un fichier XML de description (fichier de définition de service) pour préciser les paramètres et les formats de sortie.
Bonnes pratiques et points à vérifier
Nommage et organisation
- Utiliser des noms de serveurs et de services explicites (ex.
WEBSVC_SALES,WEBSVC_CUSTOMERS) pour faciliter la maintenance. - Regrouper les webservices d’une même application sur un même serveur plutôt que multiplier les instances HTTP.
Ports et sécurité
- Ne pas utiliser systématiquement le port 80⁄443 pour un serveur IWS si tu héberges déjà un site métier sur ces ports, pour limiter les conflits.
- Activer le HTTPS dès que le webservice est accessible depuis un réseau externe, en liant un certificat SSL au serveur HTTP utilisé.
Profils et droits
- Limiter les droits d’accès aux programmes exposés : ne pas utiliser de profils
*ALLOBJou trop permissifs. - Créer un profil dédié pour l’exécution des webservices (ex.
USRPRF(IBMI_WEB)ou similaire) et y attacher les autorisations nécessaires.
Journalisation et supervision
- Vérifier que les logs HTTP et du serveur de services Web sont dirigés vers des files que tu peux surveiller (journal
QHTTPSVR, fichiers de logs dédiés). - Activer la journalisation des erreurs pour les webservices afin de pouvoir diagnostiquer rapidement les problèmes de paramètres, de sécurité ou de données.
Aller plus loin avec les webservices IBM i
Générer des stubs clients
Une fois le WSDL généré, tu peux :
- Utiliser les scripts fournis avec les webservices IBM i (
wsdl2ws.sh,pcml2ile.sh, etc.) pour générer des stubs côté C/C++ ou ILE. - Créer une application cliente Java ou .NET qui consomme le WSDL pour appeler ton service.
Automatiser la gestion des serveurs
IBM fournit des scripts shell pour automatiser :
- Création d’un serveur de services Web (
createWebServicesServer.sh). - Suppression d’un serveur de services Web (
deleteWebServicesServer.sh).
Ces scripts sont utiles si tu veux intégrer la création/destruction de serveurs dans des scripts de déploiement ou des pipelines DevOps.
Exposer plusieurs services sur le même serveur
Sur un même serveur IWS, tu peux installer :
- Plusieurs programmes RPG/COBOL.
- Plusieurs requêtes SQL encapsulées en service.
Cela permet de centraliser la gestion (ports, sécurité, logging) pour toute une application métier.

