27 mai 2011

Gestion du SIGAGIP.ini et du HRACCESS.ini

Pour les versions de HR Access postérieures à la v3, il est possible de déplacer le fichier de paramètres SIGAGIP.ini hors du répertoire WINDOWS.


Le raccourci vers l'exécutable hraccess.exe peut en effet comporter des commutateurs suivants :
  •  /I Répertoire des fichiers de paramètres d'environnement
  •  /H Répertoire du fichier HRAccess.ini si ce fichier ne se trouve pas dans le répertoire de Windows
Exemple :  c:\...\hraccess.exe /Ic:\hraccess\params /Hd:\hra_ini

A compter de HRv7, remplacer hraccess.exe par hrstudio.exe.

17 mai 2011

Installation de HR Studio en mode silencieux

De façon à pouvoir déployer automatiquement sur les postes le Client C/S, il est possible d’utiliser le programme d’installation INSTALLSHIELD en mode silencieux.

Etape 1 : Générer le fichier de réponses aux boîtes de dialogue


Sur un premier poste, exécuter le fichier SETUP.EXE avec l’option /r et l’option /f1
  • l’option /r permet d’enregistrer les réponses dans le fichier de réponses (.iss).
  • l’option /f1 permet de spécifier le chemin et le nom du fichier de réponse à générer (pour éviter des résultats inattendus, indiquez un chemin absolu).

Exemple :
  Setup.exe /r /f1"c:\temp\setup.iss"

En fin d'installation, récupérez et conservez le fichier setup.iss.

Etape 2 : Exécuter le programme d’installation en mode silencieux


Déposez le fichier setup.iss sur les autres postes à installer.

Sur chacun de ces postes, exécutez le fichier SETUP.EXE avec l’option /s et les options /f1 et /f2.
  •  l’option /s indique que l’installation se fera en mode silencieux
  •  l’option /f1 permet de spécifier le chemin et le nom du fichier de réponses à prendre en compte (pour éviter des résultats inattendus, indiquez un chemin absolu).
  •  l’option /f2 permet de spécifier le chemin et le nom du fichier de compte rendu à rédiger (pour éviter des résultats inattendus, indiquez un chemin absolu).

Exemple :
  Setup.exe /s /f1"c:\temp\Setup.iss" /f2"c:\temp\Setup.log"

Détails sur le fichier Setup.log


Setup.log est le nom par défaut donné au fichier journal d'une installation en mode Silencieux.
Le fichier Setup.log contient les trois sections suivantes :
  •   Install Shield Silent : Cette section identifie le fichier comme étant un fichier journal et fournit la version de la fonction Install Shield Silent utilisée dans le cadre de l'installation en mode silencieux.
  •   Application : Cette section identifie le nom et la version de l'application installée, ainsi que le nom de la société.
  •   Response Result : Cette section contient le code de résultat qui indique si l'installation en mode Silencieux a réussi. Une valeur entière est affectée au nom de clé ResultCode dans la section Response Result du fichier. Install Shield insère l'une des valeurs suivantes dans la clé ResultCode :

   0     Succès
  -1    Erreur générale
  -2    Mode non valide
  -3    Données requises introuvables dans le fichier Setup.iss
  -4    Mémoire disponible insuffisante
  -5    Fichier inexistant
  -6    Impossible d'écrire dans le fichier réponse
  -7    Impossible d'écrire dans le fichier journal
  -8    Chemin du fichier réponse (.iss) Install Shield Silent non valide
  -9    Type de liste non valide (chaîne ou nombre)
  -10    Type de données non valide
  -11    Erreur inconnue lors de l'installation
  -12    Boîtes de dialogue inopérationnelles
  -51    Impossible de créer le dossier spécifié
  -52    Impossible d'accéder au fichier ou au dossier spécifié
  -53    Option sélectionnée non valide

Le fichier journal d'une installation en mode Silencieux réussie se présente comme suit :
  [ResponseResult]
  ResultCode=0

Pour tous renseignements complémentaire, consultez le site de l'éditeur INSTALLSHIELD.

ex : http://www.flexerasoftware.com/webdocuments/PDF/silent_installs.pdf (chapitre "InstallScript Installations")

16 mai 2011

Longueur maximale des requetes HTTP

Sous Tomcat 5 le paramètre maxHttpHeaderSize permet de préciser la longueur maximale des requêtes HTTP (en octets). Ceci correspond aux informations que le client envoie au serveur lors de ses demandes d'accès. La plus grosse partie du header est en général liée à la méthode HTTP (GET, POST, HEAD, etc.), l'URI (le chemin à l'objet), le numéro de version du protocole HTTP.

Sa valeur par défaut est de 4096 (4 Ko). Dans l'exemple ci dessous sa valeur est positionnée à 8192 (8 Ko) :

    <!- - Define a non-SSL HTTP/1.1 Connector on port 52281 -->
    <Connector port="52281" maxHttpHeaderSize="8192"
               maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
               enableLookups="false" redirectPort="52283" acceptCount="100"
               connectionTimeout="20000" disableUploadTimeout="true" />

Sur ses environnements paramétrés avec du "Single Sign On", un collègue Michel a dû monter le maxHttpHeaderSize jusqu'à "65536" (la requête véhiculant des données d’authentification de l'utilisateur).

Avec un Apache en frontal, Michel m'indique qu'il ne faut plus utiliser ce maxHttpHeaderSize (paramètre d'un connecteur HTTP inutilisé) mais le packetsize du connecteur AJP13 et  les paramètres proxyIOBufferSize et LimitRequestFieldsize de Apache :
  • au niveau du connecteur AJP mettre 
packetSize = '65536'
  • dans le fichier de configuration de Apache préciser :
proxyIOBufferSize 65536
LimitRequestFieldsize 65536


  • le HEADER est envoyé en un seul packet , donc il faut que la taille maximale d'un paquet soit suffisant, d'où les paramétres packetSize & proxyIOBufferSize, qui sont par défaut à 8Ko  seulement,
  • le paramétre LimitRequestFieldSize permet d'augmenter la taille maximale des HEADER acceptés par Apache , qui est à 8Ko seulement.
NB : Dans les anciennes versions du serveur Apache (avant 2.0.53 semble-t-il), le paramètre LimitRequestFieldSize ne permettait  pas d'augmenter la valeur par défaut , mais seulement de la limiter. Maintenant c'est possible. Noter que les commentaires dans les docs livrés avec Apache sont erronées sur ce sujet . Une discussion de développeurs de Apache fait allusion à cela.

13 mai 2011

"IOException" lors du chargement des sessions persistantes

Erreur rencontrée lors d'un redémarrage de HRv7 sous Tomcat 5 après un arrêt brutal. Ce problème se rencontre en théorie "si Tomcat essaie de sérialiser une session dans laquelle sont rangés des objets non sérialisables".

org.apache.catalina.session.StandardManager doLoad GRAVE: "IOException" lors du chargement des sessions persistantes: java.io.EOFException

La résolution de l'erreur se fait par la purge du fichier SESSIONS.ser qui se trouve par défaut dans le répertoire work de la webapp concernée (sinon dans répertoire $CATALINA_HOME/work).

12 mai 2011

Page par défaut Tomcat renvoyant sur HRaSpace

La page par défaut Tomcat (ROOT/index.jsp) permet d'accéder au management des applications Web. Pour qu'un utilisateur saisissant une adresse Web incomplète ne tombe pas sur cette page mais sur le portail HR, créez une page index.html spécifique (NB : la welcome-file-list de Tomcat rend la page index.html prioritaire sur index.jsp),

Sous .../hraspace/webapps/ROOT, créer un fichier index.html.

Y placer comme contenu :


  <html>
  <head><meta http-equiv="refresh" content="0;URL=/hra-space/portal/"></head>
  <body></body>
  </html>

avec ici "hra-space/portal/" la cible de votre redirection.

cf http://wiki.apache.org/tomcat/HowTo#How_do_I_override_the_default_home_page_loaded_by_Tomcat.3F

11 mai 2011

GE01BGV-BBAD0012-DEPASSEMENT DE CAPACITE (TABLE WORKING) : W-WP00-LGTRAV

Lors d'une génération, dépassement de capacité de la zone étalée (limitée à 9.999.999 caractères).

La longueur calculée de la zone étalée dépend de la taille des informations ET du nombre d'occurrences.

Pour supprimer l'erreur, le plus pertinent est de diminuer le nombre d'occurrences des informations multiples rattachées au processus concerné (via l'atelier processus, liste des informations rattachées explicitement).

Le nombre d'occurrences provient de la table AP30, mais par défaut de la table DI40, puis à défaut ce nombre est fixé à 999 occurrences.

Pour voir quelles sont les informations du processus XXXXX et les nombre d'occurrences paramétrés, exécutez sous SQL :

select AP30.CDSTDO, AP30.CDINFO, AP30.NBOCCR, DI40.NBOCCR 
from hr.DI40, hr.AP30 
where DI40.CDSTDO=AP30.CDSTDO and DI40.CDINFO=AP30.CDINFO 
and AP30.CDPROS='XXXXX';

Pour diminuer le nombre d'occurrences, vous pouvez agir au niveau processus.

Pour les processus utilitaires (qualification UT) vous pouvez sans risque positionner un nombre d'occurrence à 2 pour toutes les informations rattachées (les chaînes NOY ne sont pas sensibles au nombre maximum d'occurrences - cf ce message) :

update AP30 set NBOCCR=2, TIMODI=SYSDATE where CDPROS='XXXXX';
Puis regénérez.

10 mai 2011

Reduction des temps de latence OpenHR v7

Sur AIX le temps de latence OpenHR est trop long (de l'ordre de 500ms). Ceci est vérifiable en consultant le fichier stop_watch.log.

Un patch a été créé par l'éditeur pour shunter un "ping" consommateur. Pour en disposer il faut être en release 7.17.4 minimum.

Le bug étant spécifique à AIX la mise en service du shunt est à faire manuellement. Pour cela, ajouter la propriété suivante dans la ligne de commande de lancement d'openhr (script $SIGACS/openhr/bin/dispatcher.sh) : -Dcom.hraccess.dispatcher.skip_bhr_ping=true.

Exemple de ligne de commande :

nohup $_RUNJAVA -classpath $OPHRS_HOME/bin/bootstrap.jar -Dcom.hraccess.dispatcher.skip_bhr_ping=true -Dhr.bootjars.dirs=$OPHRS_HOME/lib/boot -Dhr.jars.dirs=$OPHRS_HOME/lib com.hraccess.wutil.WAppLauncher com.hraccess.dispatcher.OpenHRServer $1 $2 $3 $4 $5 $6 $7 $8 $9 1>/dev/null 2>&1 &

Autre option plus radicale : faites corriger le paramétrage du système d'exploitation. Car en tout état de cause, ce fonctionnement est lié à des paramètres AIX : tcp_nodelayack , tcp_nodelay et tcp_nagle_limit (merci Alban pour l'information).

The TCP_NODELAYACK option prompts TCP to send an immediate acknowledgement, rather than the usual 200 ms delay. Sending an immediate acknowledgement might add a little more overhead, but in some cases, greatly improves performance.

Ce tcp_nodelayack peut être fixé à 1 pour enlever le délai habituel de 200ms pour l'accusé de reception TCP.

Pour lire la valeur de ces paramètres, faites :
no -a | egrep 'tcp_nodelay|tcp_nagle_limit