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

  • 1. Exécuter le MSI fourni par Infodata
  • 2. Dans le répertoire d'installation du wiservice, exécuter le fichier install-service.bat en tant qu'administrateur.
  • 3. Démarrer le service “Infodata WIService” dans les services windows et mettre comme type de démarrage “Automatique”.
  • 4. Exécuter la requête http://localhost:1508/wiapp. SI vous avez l'erreur, “pas de pool default de dispo” ou “invalid application id”, c'est que l'installation s'est correctement déroulé.

Installation Linux

  • vérifier que python est présent (en linux c'est souvent le cas)
  • Si python 3, installer les modules suivants s'ils n'existent pas dans le répertoire site-packages :
    • pip3 install six
    • pip install soappy-py3
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.

  • copier le répertoire WIService fourni par Infodata dans un répertoire ( /opt est une bonne option)
  • créer le “service” linux qui va bien.

Redhat

  • copier le fichier unix/WIService dans /etc/rc.d/init.d.
  • chkconfig WIService –add
  • chkconfig WIService –list
    WIService       0:off   1:off   2:on    3:on    4:on    5:on    6:off


    si “3:on” affiche, c'est bon, ce sera demarre automatiquement au boot

  • Utilisation :
    -------------
    - service WIService start
    - service WIService stop
    - service WIService status
    (Des)activation au boot :
    -------------------------
    - chkconfig WIService [off|on]

Centos

  • Installation :
    • Copier le fichier WIservice.service (sans le .txt) dans le répertoire “/etc/systemd/system”
      Attention pas des char 10. Pas de char 13.
      [Unit]
      Description=WIservice
      After=httpd.service
      # start/stop WIservice #
      PartOf=httpd.service
      
      [Service]
      Type=simple
      ExecStart=/opt/WIService/wiservice.py -w 1505 -m 120 --nolog --start
      #ExecStart=/opt/WIService/wiservice.py -w 1505 -m 120 --start -d -D
      ExecStop=/opt/WIService/wiservice.py  --stop
      KillMode=process
      TimeoutStopSec=10
      Restart=always
      RestartSec=10
      #StandardOutput=/var/log/apache2/domlogs/infodata/wiapp.log
      #StandardError=/var/log/apache2/domlogs/infodata/wiapp.log
      StandardOutput=syslog
      StandardError=syslog
      SyslogIdentifier=WIservice
      
      [Install]
      WantedBy=multi-user.target
      
    • systemctl daemon-reload
    • systemctl enable WIservice
  • Utilisation :
    • systemctl start WIservice
    • systemctl stop WIservice
    • systemctl status WIservice
  • (Des)activation au boot :
    • systemctl enable WIservice
    • systemctl disable WIservice

</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
  • Eventuellement modifier quelques réglages du service directement dans ce fichier pour que la ligne de commande prenne en compte les particularités.
  • Démarrer le service
    • Copier le fichier “%INSTALL_DIR&/unix/WIService” dans /etc/rc.d/init.d
    • Exécuter les commandes :
      • chkconfig WIService –add : ajouter le service WIService
      • chkconfig WIService –list : s'assdurer que le service est bien ajouté \\
        WIService       0:off   1:off   2:on    3:on    4:on    5:on    6:off
        si "3:on" affiche, c'est bon, ce sera demarre automatiquement au boot
      • service WIService start : pour démarrer le service
  • on peut le tester en lançant wiservice.py directement, il fera alors une tentative de “statut” pour vérifier qu'il est bien fonctionnel.
  • :W: Utiliser les mêmes paramètres que dans le service ci-dessus pour le port de connexion

Configuration

  • Il est possible de modifier les paramètres par défaut du WIService.
    Par exemple, on peut passer le WIService en mode Debug ce qui aura pour conséquence de loguer un plus grand nombre d'informations.
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

  • En windows, les paramètres de configuration se trouvent dans le fichier wiservice.ini du répertoire “%ProgramFiles(x86)%\Infodata\WIService”
#------------------------------------------------------
# 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

  • En linux, il faut modifier manuellement le fichier du service. Exemple :

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 :

  • Le message “Pool default inconnu” signifie que le WIService a reçu la requête mais qu'il n'a pas de ligne WI.HDL côté base de donnée pour la traiter.
  • Dans le fichier, il y a le message :
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 :

  • Date. Date et heure de la requête.
  • Adresse IP client. L'adresse IP du PC d'où provient la requête.
  • Nom serveur WEB.
  • Methode. Methode de la requête (GET,POST,PUT,OPTION,….)
  • Url. L'url complet de la requête.
  • Statut. code statut de la requête.
    • 200. Requête traitée avec succès.
    • 408. Timeout de la requête. Ca signifie que le programme du serveur Universe a dépassé le temps maximum de la requête
    • 500. Erreur interne du serveur base de données
    • 503. PLus de handler disponible. Ca se produit si le “DEFAULT_TIMEOUT” d'attente de ligne WI.HDL est dépassé.
      Par défaut, le wiservice attend 5 secondes.
    • 504. Ce code se produit s'il n'y avait pas de ligne WI.HDL directement disponible pour traiter la requête du WiService.
    • Veuillez consulter la doc suivante pour connaitre la liste des codes HTTP
  • Content-type.le type de contenu envoyé au client.
  • Type de message. Deux types de message :
    • duree : a durée que le Wiservice a mis avant de répondre au client.
    • Erreur de traitement. Cela se produit si le Wiservice n'a pas eu de WI.HDL pour traiter la requête.
    • attente trop longue. Cela se produit s'il n'y avait pas de ligne WI.HDL directement disponible pour traiter la requête du WiService.
  • Durée. un temps en seconde dont la signification varie en fonction du code statut. Si code statut = 500, alors pas de 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=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
public/wi/installation/wiservice.txt · Dernière modification: 07/09/2023 14:36 par Jean Christophe Dewalque
 
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki