Créer un ser­veur d’ap­pli­ca­tion de web­ser­vices sur IBM i

Créer un ser­veur d’ap­pli­ca­tion de web­ser­vices sur IBM i

mer 21 septembre 2022 0 Par Ibmiiste

IBM i dis­pose depuis plu­sieurs ver­sions d’une fonc­tion­na­li­té inté­grée pour expo­ser des pro­grammes et des requêtes SQL en ser­vices Web (SOAP ou REST) via Inte­gra­ted Web Ser­vices (IWS). Cet article montre com­ment créer et démar­rer un ser­veur d’application de web­ser­vices sur IBM i à par­tir de l’admin HTTP, avec quelques bonnes pra­tiques à gar­der en tête. Le tuto­riel s’appuie sur IBM Web Admi­nis­tra­tion for i et ne néces­site pas de stack Java séparée.

Pré­re­quis et contexte

Pour­quoi un ser­veur de web­ser­vices sur IBM i ?

Les ser­vices Web inté­grés per­mettent d’exposer des pro­grammes ILE RPG, COBOL ou SQL comme web­ser­vice consom­mables par un front‑end web, une appli­ca­tion Java/.NET, une API REST, etc., en res­tant au cœur du sys­tème IBM i. Cela évite d’exporter les don­nées via des batchs ou des CSV, et favo­rise une archi­tec­ture plus moderne tout en gar­dant la logique métier côté i.

L’Integrated Web Ser­vices Ser­ver (IWS) repose sur un ser­veur HTTP (sou­vent *ADMIN) et un sous‑système dédié pour expo­ser les ser­vices SOAP/REST.

Véri­fi­ca­tions avant de commencer

Avant de lan­cer la créa­tion du ser­veur, assure‑toi que :

  • L’option Ser­vices Web inté­grés est ins­tal­lée sur ton sys­tème (sou­vent via un package spé­ci­fique selon la ver­sion IBM i).
  • Le ser­veur TCP/IP est actif (STRTCP) et le port d’administration HTTP (par défaut 2001) est accessible.
  • Un pro­fil dis­po­sant des droits d’administration IBM Web Admi­nis­tra­tion for i est dis­po­nible (pro­fil équi­pou­voirs *SECOFR ou rôle spécifique).

Les exemples ci‑dessous sont illus­trés pour V7R3.

Démar­rer le ser­veur Admin HTTP

Via Navi­ga­tor for i

  1. Depuis un navi­ga­teur, ouvrir l’URL de l’admin HTTP :
    https://<votre_IBMi>:2001
    (ou http:// si tu n’utilises pas SSL).
  • Sur un navi­ga­teur web(ou par ACS lien vers Navi­ga­tor for i), sai­sis­sez 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 admi­nis­tra­tion Admin
Voi­ci les tra­vaux des serveurs

Soit en ligne de commande

Sai­sir sur l’IBM i :

STRTCPSVR SERVER(*HTTP) HTTPSVR(*ADMIN)

Créer un ser­veur de ser­vices Web (IWS)

Prin­cipes de base

Une fois le ser­veur Admin HTTP actif, tu peux créer un ser­veur de ser­vices Web (IWS) qui encap­su­le­ra les web­ser­vices. Ce ser­veur est asso­cié à une ins­tance HTTP (sou­vent *ADMIN ou une nou­velle ins­tance dédiée). Il four­nit une URL de base (http://ibmi:port/...) et génère auto­ma­ti­que­ment un WSDL pour chaque ser­vice installé.

Étapes dans IBM Web Admi­nis­tra­tion for i

Sélec­tion­ner l’as­sis­tant Create Web Ser­vices Server.
Indi­quer le nom de votre ser­veur et une des­crip­tion de son usage.
Indi­quer le port à uti­li­ser pour consom­mer les ser­vices four­nis par le ser­veur d’ap­pli­ca­tion et le port pour le ser­veur http apache qui lui ait associé.
Vous indi­quez l’en­vi­ron­ne­ment dans lequel le ser­veur doit fonc­tion­ner. Par ce biais, vous pou­vez indi­quer le sous-sys­tème, la des­crip­tion de tra­vail et la file de travaux. 
Vous devez y sai­sir le pro­fil sous lequel le ser­veur fonctionne.
Et enfin, un résu­mé s’af­fiche avant que vous ne confir­miez la création.
Un fois confir­mé, le ser­veur est en cours de création.

Expo­ser un pro­gramme ou une requête en service

Ajou­ter un nou­veau service

  1. Dans l’onglet Manage, sélec­tion­ner le ser­veur de ser­vices Web que tu viens de créer.
  2. Cli­quer sur Deploy New Ser­vice.
  1. Choi­sir le type de web­ser­vices REST ou SOAP
  2. Choi­sir le type de service :
  • Pro­gramme ILE RPG ou COBOL : sélec­tion­ner un pro­gramme objet exis­tant (RPGLE, COBOL) et défi­nir le che­min vers celui-ci.
  • Ins­truc­tion SQL : encap­su­ler une requête SQL dans un ser­vice Web (utile pour des vues métier ou des requêtes simples).

L’assistant te pro­pose alors de défi­nir les noms des para­mètres, leurs types (entier, déci­mal, alpha­nu­mé­rique, etc.) et les cor­res­pon­dances avec les champs du pro­gramme ou de la requête.

Géné­ra­tion du WSDL et de l’URL

Une fois le ser­vice ins­tal­lé, le ser­veur génère :

  • Un WSDL acces­sible via une URL de type :
    http://ibmi:port/wsdl/monServiceWeb.wsdl
  • Une URL de test (par­fois acces­sible direc­te­ment dans l’interface) pour tes­ter le ser­vice avec un client SOAP ou un outil type SoapUI.

Pour les ser­vices SQL, tu peux aus­si uti­li­ser un fichier XML de des­crip­tion (fichier de défi­ni­tion de ser­vice) pour pré­ci­ser les para­mètres et les for­mats de sortie.

Bonnes pra­tiques et points à vérifier

Nom­mage et organisation

  • Uti­li­ser des noms de ser­veurs et de ser­vices expli­cites (ex. WEBSVC_SALESWEBSVC_CUSTOMERS) pour faci­li­ter la maintenance.
  • Regrou­per les web­ser­vices d’une même appli­ca­tion sur un même ser­veur plu­tôt que mul­ti­plier les ins­tances HTTP.

Ports et sécurité

  • Ne pas uti­li­ser sys­té­ma­ti­que­ment le port 80443 pour un ser­veur IWS si tu héberges déjà un site métier sur ces ports, pour limi­ter les conflits.
  • Acti­ver le HTTPS dès que le web­ser­vice est acces­sible depuis un réseau externe, en liant un cer­ti­fi­cat SSL au ser­veur HTTP utilisé.

Pro­fils et droits

  • Limi­ter les droits d’accès aux pro­grammes expo­sés : ne pas uti­li­ser de pro­fils *ALLOBJ ou trop permissifs.
  • Créer un pro­fil dédié pour l’exécution des web­ser­vices (ex. USRPRF(IBMI_WEB) ou simi­laire) et y atta­cher les auto­ri­sa­tions nécessaires.

Jour­na­li­sa­tion et supervision

  • Véri­fier que les logs HTTP et du ser­veur de ser­vices Web sont diri­gés vers des files que tu peux sur­veiller (jour­nal QHTTPSVR, fichiers de logs dédiés).
  • Acti­ver la jour­na­li­sa­tion des erreurs pour les web­ser­vices afin de pou­voir diag­nos­ti­quer rapi­de­ment les pro­blèmes de para­mètres, de sécu­ri­té ou de données.

Aller plus loin avec les web­ser­vices IBM i

Géné­rer des stubs clients

Une fois le WSDL géné­ré, tu peux :

  • Uti­li­ser les scripts four­nis avec les web­ser­vices IBM i (wsdl2ws.shpcml2ile.sh, etc.) pour géné­rer des stubs côté C/C++ ou ILE.
  • Créer une appli­ca­tion cliente Java ou .NET qui consomme le WSDL pour appe­ler ton service.

Auto­ma­ti­ser la ges­tion des serveurs

IBM four­nit des scripts shell pour automatiser :

  • Créa­tion d’un ser­veur de ser­vices Web (createWebServicesServer.sh).
  • Sup­pres­sion d’un ser­veur de ser­vices Web (deleteWebServicesServer.sh).

Ces scripts sont utiles si tu veux inté­grer la création/destruction de ser­veurs dans des scripts de déploie­ment ou des pipe­lines DevOps.

Expo­ser plu­sieurs ser­vices sur le même serveur

Sur un même ser­veur IWS, tu peux installer :

  • Plu­sieurs pro­grammes RPG/COBOL.
  • Plu­sieurs requêtes SQL encap­su­lées en service.

Cela per­met de cen­tra­li­ser la ges­tion (ports, sécu­ri­té, log­ging) pour toute une appli­ca­tion métier.