Table des matières


Wiservice

Wiservice

Rôle

Le WIService est un programme Python assurant le relais d'une requête http entre une session d'un logiciel de serveur services Web (IIS,http,…) et une session WI.HDL 1)

Installation Windows

Installation Linux

Vérifier aussi que les modules suivant sont déjà installés sinon installez-les :
  • pip3 install wstools-py3. Ce module doit normalement s'installer avec le module soappy-py3
  • pip3 install defusedxml . Ce module doit normalement s'installer avec le module soappy-py3
  • pip3 install wheel
  • pip3 install version
  • pip3 install suds
  • pip3 install six

Si serveur suze, installer module Pbr

Si la version de python est >= 3.10, il faut modifier manuellement le programme {PythonPath}\Lib\site-packages\wstools\Utility.py
Remplacer la ligne
from collections import MutableMapping

par

import sys
    if sys.version_info.major == 3 and sys.version_info.minor >= 10:
        from collections.abc import MutableMapping
    else:
        from collections import MutableMapping

Raison : The attribute MutableMapping from the module collections got moved into collections.abc in python3.10.

Redhat

Centos

</code>

Ubuntu

Doc pour créer service en utilisant upstart : http://upstart.ubuntu.com/getting-started.html. 
Le fichier service du wiservice se trouve ici : unix/wiservice-ubuntu.conf

Configuration

Code du fichier ini Options service linux Description
DEFAULT_PORT -l ou –listening Numero de port sur lequel le serveur ecoutera les requetes HTTP afin de les transmettre a la DB
Defaut = 1508
DEFAULT_WI -w ou –wi Numero de port sur lequel le serveur ecoutera les connexions venant de la DB
DEFAULT_TIMEOUT -t ou –timeout Durée d'attente du serveur pour avoir un handler de disponible.
Si le delai est dépassé, la requête n'aboutira pas et le WIService renvoie un message d'erreur (plus de handler disponible).
Défaut = 5 secondes.
DEFAULT_HEARTBEAT -b ou –heartbeat Durée de la période d’inactivité d'un handler du service.
Apres cette durée, un message est envoie pour ralonger ce temps, sinon la connexion risque d’être perdue.
Défaut = 20 secondes
DEFAULT_MAXEXEC -m ou –maxexecute Durée maximum d’exécution des requêtes vers la DB.
Si le traitement dépasse le délai, une erreur avec code 408 sera renvoyée au navigateur.
Defaut = 60 secondes
DEBUG -d ou –debug Mode debug. Si true, Affiche plus de message de ce qui se passe.
Défaut = False
DEBUG_DEV -D Mode développeur. Laisser toujours à False, sauf si vous voulez débuguer le programme WIService.
Défaut = False
NO_LOG –nolog Ne vas rien loguer.
Défaut = False
LOG_PATH_FILE C'est le chemin complet vers le fichier log y compris le nom du fichier log.
Mettre YYYYMMDD si vous souhaitez avoir un fichier log par jour.
Si paramètre vide ou manquant, alors un fichier wiservice.log et wiservice_debug.log seront créé dans le répertoire du WIService
C:\mon_repertoire_log\wiservice_YYYYMMDD.log

Windows

#------------------------------------------------------
# Fichier de config du service windows "WIService"
# si une valeur n'est pas mentionnée ou vide, ce sera
# la valeur par défaut qui sera mentionnée
#------------------------------------------------------
# DEFAULT_PORT      = Numero de port sur lequel le serveur ecoutera les 
#                     requetes HTTP afin de les transmettre a la DB
#                     Defaut = 1508
# DEFAULT_WI        = Numero de port sur lequel le serveur ecoutera les connexions venant de la DB 
#                     Defaut = 1505
# DEFAULT_TIMEOUT   = Duree d'attente du serveur pour avoir un handler de disponible. 
#                     Si le delai est depasse, la requete n'aboutira pas, et on renvoit un message d'erreur.
#                     Defaut = 5 secondes. 
#                     Message d'erreur = plus de handler disponible 
# DEFAULT_HEARTBEAT = Duree de la periode d'inactivite d'un handler du service. 
#                     Apres cette duree, un message est envoye pour ralonger ce temps, sinon la connexion risque d'etre perdue
#                     Defaut = 20 secondes
# DEFAULT_MAXEXEC   = Duree maximum d'execution des requetes vers la DB. 
#                     Si le traitement depasse le delai, une erreur sera renvoyee au navigateur.
#                     Defaut = 60 secondes
# DEBUG             = Mode debug. Si true, Affiche plus de message de ce qui se passe
#                     Defaut = False
# DEBUG_DEV         = Mode developpeur. Laisser toujours à False, sauf si vous voulez debuguer le programme WIService
#                     Defaut = False
# NO_LOG            = True si vous ne voulez pas que le WIservice logue son activité
#                     Defaut = False
# LOG_PATH_FILE     = C'est le chemin complet vers le fichier log y compris le nom du fichier log.
#                     Mettre YYYYMMDD si vous souhaitez avoir un fichier log par jour
#                    Si paramètre vide ou manquant, alors un fichier wiservice.log et wiservice_debug.log seront créé dans le répertoire du WIService
#------------------------------------------------------
# Retirer le # devant la variable pour activer un paramètre
#------------------------------------------------------
#DEFAULT_PORT = 1508
#DEFAULT_WI = 1505
#DEFAULT_TIMEOUT = 5
#DEFAULT_HEARTBEAT = 20 
#DEFAULT_MAXEXEC = 60
#DEBUG = False
#DEBUG_DEV = False
#NO_LOG = False
#LOG_PATH_FILE = C:\mon_repertoire_log\wiservice_YYYYMMDD.log
Si une ligne d'un paramètre commence par # (=commentaire), alors ce paramètre ne sera pas pris en compte

Linux

Procédure

Vérifier que le WIService recoit les requêtes

Installation avec succès

Voici les deux messages d'erreurs que vous pouvez avoir et qui signifie que le wiservice est correctement installé.

Pool default inconnu

Vous devez avoir comme résultat l'erreur suivante :

Trying to start server on localhost:1508 , wiservice listening on 1505
[Fri Jun 19 15:08:21 2015] ? GET /wiapp : 500 - Erreur de traitement : Pool default inconnu
Sur le serveur DB, il faut ouvrir le port 1505 pour que les lignes WI.HDL sur le serveur DB(Integrix) puisse se connecter au wiservice.
Invalid application id

Si la communication avec le compte WEB est déjà fonctionnel, vous n'aurez pas le message d'erreur “Pool default inconnu” mais l'erreur Invalid application id

Ex :

Log

Dans le répertoire du WIService, il y a le fichier log wiservice.log qui reprend la liste des requêtes traités du jour.

Dans une ligne du fichier log, nous retrouverons :

[Fri Jun 19 11:40:35 2015] 192.168.0.82->masterdev GET /dos/AC.TEST&w3hostname=TP&w3exec=ac.ctr : 200 - application/json; charset=UTF-8 , duree: 0.156986 sec
[Fri Jun 19 11:45:22 2015] 192.168.0.97->masterdev GET /dco/3?&w3hostname=TP&w3exec=ac.ctr : 404 - Enregistrement 3 inexistant !
[Fri Jun 19 12:09:41 2015] 192.168.0.79->masterdev GET /gcf?&w3hostname=TP&w3exec=ac.ctr : 504 - attente trop longue : 0.140280 sec
[Fri Jun 19 13:32:22 2015] 192.168.0.82->masterdev POST /dap?&w3hostname=TP&w3exec=ac.ctr : 500 - Erreur de traitement : Erreur lors de la communication avec le Handler Erreur lecture chr(0)
Date Adresse IP client Nom serveur WEB Methode Url Statut Content-type Type de message Durée
[Fri Jun 19 11:40:35 2015] 192.168.0.82 masterdev GET /dos/AC.TEST?&w3hostname=TP&w3exec=ac.ctr 200 application/json; charset=UTF8 duree : 0.156986 sec
[Fri Jun 19 11:45:22 2015] 192.168.0.97 masterdev GET /dco/3?&w3hostname=TP&w3exec=ac.ctr 404 Erreur de traitement Enregistrement 3 inexistant !
[Fri Jun 19 12:09:41 2015] 192.168.0.79 masterdev GET gcf?&w3hostname=TP&w3exec=ac.ctr 504 attente trop longue 0.140280 sec
[Fri Jun 19 13:32:22 2015] 192.168.0.82 masterdev POST /dap?&w3hostname=TP&w3exec=ac.ctr 500 Erreur de traitement Erreur lors de la communication avec le Handler Erreur lecture chr(0)
1)
Le WI.HDL est une ligne phantom sur le serveur DB qui reçoit les informations d'une requête HTTP et qui fait le traitement souhaité côté DB