18 mars 2014

HRaSpace et "java.sql.SQLRecoverableException: Il n'y a plus de données à lire dans le socket"


Sur un site l'application HRaSpace était indisponible le lendemain de chaque sauvegarde de la base de données. Sur ce site la base JetSpeed était déportée sur un schéma Oracle.

Le problème rencontré était lié à la gestion du pool de connexion JDBC de Tomcat sur la base Jetspeed. Dans le cas particulier d'une déconnexion (arrêt Oracle) - JetSpeed n'est pas informé de cette fermeture - et le prochain accès provoque l'erreur même si la base est entre temps redémarrée.

Une solution est de paramétrer Tomcat pour qu'il vérifie la validité des connexions dans le pool. Pour cela, modifier le fichier de configuration du pool JDBC en ajoutant un attribut "validationQuery" avec une requête de test (cf documentation Tomcat). Dans le cas de Oracle, la requête peut être du type "select 1 from DUAL"

Exemple de fichier tomcat/conf/Catalina/localhost/hra-space.xml :

<Resource name="jdbc/jetspeed" auth="Container"
validationQuery="select 1 from DUAL"
factory="org.apache.commons.dbcp.BasicDataSourceFactory"
type="javax.sql.DataSource" username="<user>" password="<passwd>"
driverClassName="oracle.jdbc.driver.OracleDriver" url="jdbc:oracle:thin:@<server>:<port>:<base>"
maxActive="100" maxIdle="30" maxWait="10000"/>



Merci à la HotLine pour cette information.

A noter : En général ce problème n’apparait pas car lors d'une sauvegarde offline (base arrêtée) on ferme l'application Web !

21 février 2014

Déclarer des "profils" pour les connecteurs JDBC de la Topologie

Avec HRaSuite 9 il est possible de déclarer des "profils JDBC" dans la topologie système. L'information est présente (au moins depuis le Design Center 7.30.30) dans le fichier "Design Center/EXE/Compagnon/F_SITE_OBJECT_7_2.htm" mais avec ma version de Studio le Compagnon ne l'affiche pas !





Les profils sont à déclarer dans le connecteur JDBC de la fonction "serveurs HR Access" de l’objet Topologie système.

4 février 2014

Soumission des scripts sub** (Y/N/T) Choix T : Voir le log défiler en avant plan

Le script $SIGACS/finsub est exécuté par chacun des scripts sub**. Il demande à l'utilisateur s'il souhaite exécuter le traitement.

                Soumettre le job (Y/N/T) [N] ?

Les choix sont :
  • Y : Soumission immédiate en arrière plan,
  • N : pas de soumission du traitement,
  • T : Soumission "TP" en avant plan.
Par défaut l'exécution en avant plan retient l'utilisateur jusqu'à la fin du traitement, sans fournir d'information à l'écran.

Pour visualiser le défilement du compte rendu, modifiez le script comme suit :

...
if
  [ "$CFLAN" = "Y" ]
  then
    echo "${T_JOBSUB}"
    $SIGACS/bin/job "$1" "$2"
    CODE_RETOUR=$?
  else
    if
      [ "$CFLAN" = "T" ]
      then
        echo "${JOBTP}"
        # Maj DIGIX : le compte rendu est envoye sur la sortie ecran en plus du log
        $SIGACS/prod/shl/"$1" "$2" 2>&1 |tee $LOG/$JOBLOG

        # Fin maj DIGIX
      else
        exit 12
    fi
fi ...




A noter : un traitement en "avant plan" sera interrompue en cas de perte de la session Unix, ou d'un CTRL^C exécuté par l'utilisateur.

3 février 2014

Retrouver les DDL de création d'une table

La chaine RBF permet de générer les DDL de création des tables HR Access en se basant sur la description des objets "Information". Le programme utilise aussi des résultats intermédiaires de génération : les "macros information" des tables GE1*. Ces macros ne sont présentes que sur les environnements de type "Développement" (générables).

Quand il n'est pas possible de créer ces DDL avec la chaîne RBF, le SGBD permet en général de retrouver l'ordre de création (exemple avec la table TP13) :
  • sous Oracle, via SQLPlus :
SET LONG 2000000 PAGESIZE 0SELECT dbms_metadata.get_ddl('TABLE','TP13','HR') FROM DUAL;

DBMS_METADATA.GET_DDL('TABLE','TP13','HR')
--------------------------------------------------------------------------------

  CREATE TABLE "HR"."TP13"
   (    "IDPOPL" CHAR(4) NOT NULL ENABLE,
        "TEVERR" CHAR(1) NOT NULL ENABLE,
        "TIPOPL" DATE NOT NULL ENABLE,
         CONSTRAINT "IXTP13" PRIMARY KEY ("IDPOPL")
  USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255
  STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
  TABLESPACE "HRXT"  ENABLE
   ) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING
  STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
  TABLESPACE "HRTT"


  • sous DB2, via Unix :
db2look -d $DB2DBDFT -e -u $LOGNAME -tw "TP13"

------------------------------------------------
-- DDL Statements for table "HR      "."TP13"
------------------------------------------------

CREATE TABLE "HR      "."TP13"  (
                  "IDPOPL" CHAR(4) NOT NULL ,
                  "TEVERR" CHAR(1) NOT NULL ,
                  "TIPOPL" TIMESTAMP NOT NULL )
                 IN "USERSPACE1" ;

-- DDL Statements for primary key on Table "HR      "."TP13"

ALTER TABLE "HR      "."TP13"
        ADD PRIMARY KEY
                ("IDPOPL");

COMMIT WORK;
CONNECT RESET;
TERMINATE;

31 janvier 2014

Erreur BQL au chargement : Clef en double - S1/EXECUTE/10/PK/000000000000001

Christian relance une NJU incidentée du fait d'un disque plein. Mais le chargement par BQL de ZX5W se bloque sur une erreur de "clef en double" qui n'existait pas auparavant :

*GE01BQL-BBAD0015-ERREUR D'ACCES (TABLE RELATIONNELLE) : S1/EXECUTE/10/PK/000000000000001
*GE01BQL-00000000- INSERT INTO       HR.ZX5W        (NUDOSS,NULIGN,SOCDOS,PGPDOS,CODCHN,TYREPO,IDC
*GE01BQL-00000000-HN ,TIMCHN,STATUS,IDGPRG,SOCCLE,MATRIC,NUDOSP,IDSITU,PERPAI,USAGEP,NUMTRT,NUMBUL
*GE01BQL-00000000-,TIMEST) VALUES ( +000066862, +000001, '100', +001230000, 'NJU', 'D', 'DADSU2013
*GE01BQL-00000000-         ', TO_DATE ('2014-01-30-19.14.58','YYYY-MM-DD-HH24-MI-SS'), '0', +00123
*GE01BQL-00000000-0000, '100', '00566       ', +001, '  ', 'MT201301', 'S', '0', '01', TO_DATE ('0
*GE01BQL-00000000-001-01-01-00.00.00','YYYY-MM-DD-HH24-MI-SS'))
*GE01BQL-BBAD0008-STATISTIQUES SUR LES FICHIERS (ENREGISTREMENTS LUS/ECRITS)
*GE01BQL-BBAD0009-PA (PA) : 000000000000001
*GE01BQL-BBAD0009-SQ (SQ) : 000000000000337
*GE01BQL-BBAD0011-*** BQL : FIN ANORMALE - HORODATAGE DE FIN   : 2014-01-30-19.21.32  **** CODE RETOUR 99 ******


Après analyse, il s'est avère que:
  • Une première exécution de BQL s'est interrompue en cours de chargement,
  • Lors de cette exécution la ZXTD12 a été purgée,
Lorsque la chaine est relancée :
  • Sans données dans la ZXTD12, la chaine choisit de prendre un NULIGN = 1
  • Mais ce n° est déjà pris :


NUDOSS NULIGN SOC PGPDOS COD T IDCHN TIMCHN S IDGPRG SOC MATRIC NUDOSP ID PERPAI U N NU TIMEST
---------- ---------- --- ---------- --- - ------- ------------------- - ---------- --- ------------ ---------- -- -------- - - -- -------------------
66862 1 100 1230000 NJ6 C RFEDB 2013-01-23-13.51.46 0 1230000 100 00566 1 MT201301 S 0 01 0001-01-01-00.00.00


Solution : reconstruire la ZXTD12 en exécutant une ROL (dans certains cas simple un SQL d'INSERT peut suffire).

17 décembre 2013

Correspondances entre traitements d'édition de bulletin HRv5 et HRv7

Ci dessous une table de correspondances (rencontrée au hasard d'un projet) entre la V5 et la V7 concernant certains contextes de traitements de paie :


 

HRv5
HRv9

Program/Job Contexts Program/Job Contexts
Initialize at beginning of program DBD/NJ1 TDP350 DB9 TDP350
"

DGD TDP754
"

DC7 TDPA34
Load rule system DBD/NJ1 TDP351 DB9 TDP351
"

DGD TDP755
"

DC7 TDPA35
Modify items in the bank transfer interface DBD/NJ1 TDP352 DGD
Initialize user-dehned variables DBD/NJ1 TDP358 DB9 TDP358
Initialize payroll log holds DBD/NJ1 TDP360 DB9 TDP360
Process payroll log fields DBD/NJ1 TDP362 DB9 TDP362
Delete payslip DBD/NJ1 TDP364 DGD TDP757
End of job DBD/NJ1 TDP366 DB9 TDP366
"

DC8 TDPA53
Modify payslip sort criteria DBD/NJ1 TDP368 DC7 TDPA36
Modify payment sort criteria DBD/NJ1 TDP370 DGD TDP757
Insert sort arguments for payroll logs DBD/NJ1 TDP372 DB9 TDP372
Modify values in the payroll log work field DBD/NJ1 TDP374 DB9 TDP374
Merge payroll items DBD/NJ1 TDP376 DC8 TDPA60





Process parameters DBL/NJ1 TDP530  DC8/NJ6 TDPA40 
Process the payslip issuing date  DBL/NJ1 TDP532  DC8/NJ6 TDPA40 
Initialize all companies DBL/NJ1 TDP534  DC8/NJ6 TDPA41 
Calculate flow control variables  DBL/NJ1 TDP536  DC8/NJ6 TDPA42 
Recovery of the company data  DBL/NJ1 TDP537  DC8/NJ6 TDPA43 
Process item positions on payslip DBL/NJ1 TDP538  DC8/NJ6 TDPA44 
Move items from payslip body to stub DBL/NJ1 TDP539  DC8/NJ6 TDPA45 
Process payslip header lines DBL/NJ1 TDP540 DC8/NJ6 TDPAA6 
Print payslip header using customized spgm  DBL/NJ1 TDP541 DC8/NJ6 TDPA47 
Process payslip stub lines DBL/NJ1 TDP542 DC8/NJ6 TDPA48 
Print payslip stub fines using customized spgm  DBL/NJ1 TDP543 DC8/NJ6 TDPA49 
Process printout of payslip body DBL/NJ1 TDP544 DC8/NJ6 TDPA50 
Process user subreports for payslip DBL/NJ1 TDP545  DC8/NJ6 TDPA59 
Prepare total lines DBL/NJ1 TDP546  DC8/NJ6 TDPA51 
Process lines after totaling  DBL/NJ1 TDP548  DC8/NJ6 TDPA52 
End of job DBL/NJ1 TDP550 DC8/NJ6 TDPA53

25 novembre 2013

The JSP specification requires that an attribute name is preceded by whitespace

Avec la 7.30.40 un problème d'affichage de "Mes demandes" du Self Service a été identifié sur les serveurs Tomcat 7. Aucune demande et notification ne s'affiche et une erreur apparait dans la log :

org.apache.jasper.JasperException: /WEB-INF/view/followup.jsp (line: 248, column: 126) The JSP specification requires that an attribute name is preceded by whitespace at org.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler
.java:42)


Pour le corriger il faut:
  • Ajouter la ligne suivante dans le fichier tomcat/conf/catalina.properties :
org.apache.jasper.compiler.Parser.STRICT_WHITESPACE=false
  • Redémarrer le serveur web.

22 novembre 2013

Firefox 17 ESR - fichier PDF vide ou fenêtre blanche qui s'ouvre et se ferme en boucle

Firefox 17 ESR intègre un lecteur de PDF interne. Pour faire fonctionner les fusions bureautiques correctement, il faut désactiver ce lecteur PDF interne et réactiver le plug-in acobat.

Pour cela :
  • Dans Firefox allez dans le menu outils/options/application
  • Pour les lignes "Adobe..." choisir "Use adobe acrobat in firefox".
  • Dans Adobe : dans le menu editions/preferences/internet/options du navigateur web, 
  • cocher l'option: Afficher les pdf dans le navigateur

8 novembre 2013

Allocation mémoire des applications Java

Ci dessous un résumé de ce que j'ai glané sur les mécanismes d'allocation mémoire des applications Java. Une des difficulté est d'intégrer les variations du vocabulaire. Ce n'est pas la seule ...

Le Heap

C'est le "tas" de mémoire alloué à chaque processus Java (Dans le cas de HR Access on trouvera un processus Java pour OpenHR, un pour HRQuery, un pour Tomcat). La taille maximale allouable est fonction du système (Sun, Red Hat, Windows ... / 32, 64 bits). Des paramètres de la ligne de commande permettent notamment de préciser pour chaque instance Java une taille de Heap au démarrage et un maximum à ne pas dépasser.

Le Heap est segmenté en plusieurs zones, dites "Générations". Ceci permet de gérer les objets éphémères (iterateurs, variables locales) et de pérenniser des objets persistants :
 
- Zone dite "New" ou "Young Generation" ou "nursery", sous divisée en :
  • Eden (le paradis, là ou sont placés les objets nouvellement créés)
  • Survivor 1 & 2 (les objets survivant aux premiers passages du Garbage Collector - cf plus bas)
  • Virtually reserved (espace libre)
- Zone dite "Old Generation" ou "Tenured", sous divisée en :
  • Tenured (les objets "titularisés")
  • Virtually reserved (espace libre)
Pour être complet, s'ajoute au Heap une zone mémoire dite "Permanent Génération" pour les données de la machine virtuelle elle-même (classes et méthodes). 

http://www.jmdoudoux.fr/java/dej/chap-gestion_memoire.htm
 


Le Garbage Collector

Ou "ramasse miette". C'est le mécanisme de récupération de mémoire. Les "Garbage Collections" (déclenchements du Garbage Collector) partielles ("partial" ou "minor") ne traitent que la zone "New Generation". Les "GC" complètes ("full") traitent toutes les zones dès que la "Old" ou la "Permanent" sont remplies.

Par défaut, la machine virtuelle Java augmente ou diminue le "Heap" à chaque "GC" pour essayer de garder dans chaque zone la proportion prévue d'espace libre.



Le passage trop fréquent des "GC" (sous-dimensionnement mémoire ou mauvaise répartition) peu coûter cher en terme de performances.

7 novembre 2013

Masquer l'url "Comment faire" du Self-service

Depuis HRv7 le Self Service présente en standard des liens d'aide "Comment faire".
Ici sur une Suite 9 avec un client de version 7.30.30, 



En l'absence de fichiers d'aide en ligne, le lien serait à masquer ...

Une méthode "basique" 

elle consiste à :
  • Supprimer le libellé "Comment faire ?" dans le fichier des libellés de hra-space.
  • Remplacer l’icône par une icône vide dans la charte graphique 

4 novembre 2013

Modifier l'aide en ligne de HRaSpace

Les éléments suivants ont été vus sur une version cliente 7.30.30.

Cas général


L'url du lien d'accès à l'aide en ligne est évaluée par HRaSpace
  • l'aide en ligne est stockée dans  l'arborescence .../webapps/hra-space/help
  • elle fait référence à l'action fonctionnelle du GP 
par exemple : http://1.2.3.4:5678/hra-space/help/HRASTD/F/FR/SSEMP/CNT_FA_PADADDG0.htm.

La règle d'évaluation est placée dans help.properties. On verra par exemple pour le self service la règle suivante :

gp=HRASTD/${userLanguage}/${navigationLocalization}/${roleCategory}/CNT_FA_${functionalActionName}.htm

On trouve aussi dans hra-space/help un fichier "Customizing HRa Space Help.pdf" qui explique que l'aide en ligne se modifie "à la main". Information reprise dans le compagnon au chapitre "Comment personnaliser l'aide en ligne HRa Space ?"... :
          You can modify the contents by simply modifying the html files, preferably with a dedicated editor.
          Vous pouvez modifier le contenu de l'aide en intervenant directement sur les fichiers html, de préférence avec un éditeur dédié.

C'est donc avec l'éditeur du système - ou avec un éditeur HTML du commerce que doivent être modifiées ou créées les pages d'aide. Placez les dans l'arborescence .../webapps/hra-space/help en respectant la règle d'évaluation des chemins.

Cas de "qu'est un identifiant ?"

 

Editez le fichier .../webapps/hra-space/help/HRADRJ/F/COSPALogging.htm et adaptez le texte par défaut (dans certaines versions le /HRADJR est à replacer par /HRASTD) :

<P id=contenttext>Your Login is the user name defined according to your company policy. It can be built with your name, or your corporate identification.</P>

et celui conditionné par la langue :

sBody="Votre identifiant correspond au nom d'utilisateur qui vous est attribué, selon les règles en vigueur dans votre société."

Rappel pour HR Rich Client

L'aide en ligne du client riche est construite à partir des objets "Documentation" de HRStudio.


 

18 octobre 2013

Récupérer un fichier supprimé sous Unix

Le sous répertoire "fd"(pour "file descriptor") dans le répertoire au /proc/<PID> permet de faire le bilan des "fichiers" (au sens large) accédés par un processus Unix actif. Ci dessous pour le processus OpenHR dont le PID est 16964 :

ps -fp 16964 
UID        PID  PPID  C STIME TTY          TIME CMD
hradev   
16964  1  1 10:41 pts/4    00:00:16 /usr/java1.6/bin/java -Xms64M -Xmx128M -classpath /hradev/openhr/bin/bootstrap.jar 

ls /proc/16964/fd
0  10  12  14  16  18  2   21  23  25  27  29  30  32  34  36  38  4   41  43  45  47  49  50  52  54  57  
1  11  13  15  17  19  20  22  24  26  28  3   31  33  35  37  39  40  42  44  46  48  5   51  53  55  59

Un "ls -l" affichera (sous Linux) le lien entre le numéro du "descripteur de fichier" et sa cible :

ls -l /proc/16964/fd
lr-x------ 1 hradev hradev 64 18 oct.  10:58 0 -> /dev/null
l-wx------ 1 hradev hradev 64 18 oct.  10:58 1 -> /dev/null
lr-x------ 1 hradev hradev 64 18 oct.  10:58 10 -> /hradev/openhr/lib/commons-codec-1.6.jar
lr-x------ 1 hradev hradev 64 18 oct.  10:58 11 -> /hradev/openhr/lib/commons-net-3.0.1.jar
lr-x------ 1 hradev hradev 64 18 oct.  10:58 12 -> /hradev/openhr/lib/hr-kernel-7.30.03007.1234.jar
lr-x------ 1 hradev hradev 64 18 oct.  10:58 13 -> /hradev/openhr/lib/commons-httpclient-3.1.jar

...
l-wx------ 1 hradev hradev 64 18 oct.  10:58 52 -> /hradev/openhr/logs/ophrs.log (deleted)

On notera que le descripteur de fichier 52 pointe  sur un fichier qui a été supprimé : le log de OpenHR.

Toutefois, le processus OpenHR étant encore actif et n'ayant pas libéré le fichier, ce dernier est encore "présent"... Même s'il n'est plus affiché à l'utilisateur qui liste le contenu du répertoire :

ls -l /hradev/openhr/logs/ophrs.log
ls: impossible d'accéder à /hradev/openhr/logs/ophrs.log: Aucun fichier ou dossier de ce type

Il peut donc être consulté, voir recopié (dans un cas comme celui du ophrs.log, n'essayez pas de restaurer le fichier : vous créeriez un "nouveau" fichier log dont le descripteur de fichier sera différent de celui d'origine).

tail /proc/16964/fd/52
2013-10-18 10:41:42,619 INFO  [        ][               ][main] - OPHRS1999 OpenHR server is ready for business (Release <7.000>)
2013-10-18 10:42:41,294 INFO  [000000B7][188.8.244.10   ][MessageProcessor-2] - OPHRS1077 Queued a new message for service <Default>
2013-10-18 10:44:05,419 INFO  [00000305][188.8.244.10   ][MessageProcessor-2] - OPHRS1200 Using strategy <com.hraccess.dispatcher.service.login.uid.SimpleVirtualSessionIdGenerator> to create virtual session IDs


Plus de détails sur : http://www.hackinglinuxexposed.com/articles/20020507.html

11 octobre 2013

BQL-BBAD0012-DEPASSEMENT DE CAPACITE (TABLE WORKING) : WP02-CDSQLD

En cas de message de ce type lors d'une exécution de BQL (par exemple dans K2Y, K22, NJ3, mais surtout NJU, NJN,NJY), ici lors d'une NJU :
*GE01BQL-BBAD0012-DEPASSEMENT DE CAPACITE (TABLE WORKING) : WP02-CDSQLD/000000000000400/000000000000401

C'est sans doute que le programme BQL a utilisé un point de reprise "inopportun".

La table PG50 sert à BQL pour mémoriser son point d'avancement. Ce qui lui permet de reprendre le traitement là ou il été interrompu. La clef de la table est
  • Le code de la chaîne, mais parfois "BQ1'"et "BQ2"
  • Un identifiant sur 8 caractères (IDEJOB en général vide)
  • Un identifiant sur 4 caractères (IDENT4 en général "BQL ")
  • Le code du processus (en général forcé à "*GE01")
  • Le numéro de travail.

Si BQL trouve un enregistrement PA7I il utilisera la PG50 pour savoir ou reprendre le chargement interrompu. Et si la PG50 contient de vieilles données, son comportement peut être imprévisible ...

Pour ne pas avoir de problème lors des exécutions de BQL,
  • Vérifier que le fichier paramètre est vide (sauf en cas de reprise),
  • Sinon supprimez le contenu de la table PG50 pour le numéro de job concerné.

Dans le cas de la NJU la carte est alimentée en standard dans le shell. La seule option est donc la purge ...

EXECBQL :echo "PA7IBQL         00"
FDARCNJY:echo "PA7IBQ1"\
FDARCNJY:echo "PA7IBQ2"\
FDNATNJN:echo "PA7IBQ1         £PQ"\
FDNATNJN:echo "PA7IBQ2         £PQ"\
FDPAYK2Y:echo "PA7IK2Y         £PQ"\
FDXPGK22:echo "PA7IK22         £PQ"\
FDXPGNJ3:echo "PA7INJ3        S£PQ"\
FDXWDNJU:echo "PA7IBQ1         £PQ"\
FDXWDNJU:echo "PA7IBQ2         £PQ"\



10 octobre 2013

Parametre hr_design.time_measure_enabled du fichier dispatcher.properties

Avec HRv7 le paramètre hr_design.time_measure_enabled = true du fichier de paramétrage de OpenHR dispatcher.properties permet d'obtenir dans les fichiers des traces Cobol des messages de début et de fin de transaction.


Receiving (16)  <flag=0>   16 Received -> 16
|BEGIN_TRAN|9109686|2013-10-10 15:19:11,582097000|
Send (5)  <flag=0>.
Receiving (189)  <flag=0>   189 Received -> 189
|RECV|9109686|189|2013-10-10 15:19:11,582221000|-5---------6---------7---------8
12345678901234567890123456789012345678901234567890123456789012345678901234567890
XXXXXXXXXXXXXXXX
OPHR             XD#-
                           41
12345678901234567890123456789012345678901234567890123456789012345678901234567890
LONGUEUR: 189

E:2013-10-10 15:19:11,583844:XXXXXXXX:41
Send (4)  <flag=0>.
|SEND|9109686|4|2013-10-10 15:19:11,587239000|---5---------6---------7---------8
12345678901234567890123456789012345678901234567890123456789012345678901234567890
9100
12345678901234567890123456789012345678901234567890123456789012345678901234567890
LONGUEUR: 4

|END_TRAN|9109686|0.00|2013-10-10 15:19:11,587352000|2013-10-10 15:19:11|
R:2013-10-10 15:19:11,587495:XXXXXXXX:41


Ceci est de peu d'intérêt : les informations sont les mêmes que les RECV et SEND en moins complet (la taille des paquets et les décimales de l'horodatage de fin des END_TRAN y sont absents).

8 octobre 2013

Redirection vers une page d'erreur si Tomcat est fermé

Si vous avez installé un serveur Web de présentation (par exemple Apache) en frontal de votre serveur Web d'application (par exemple Tomcat), vous pouvez indiquer au premier une redirection vers une page d'erreur quand le second est inaccessible.

Ci dessous un exemple de paramétrage Apache (fichier httpd.conf) :

DocumentRoot "/hradev/apache/htdocs"
#
# --------------- Page d'erreur specifique
ErrorDocument  503  /hraccess-indisponible.html

et de page HTML d'indisponibilité :

/hradev/apache/htdocs/hraccess-indisponible.html

<HTML>
<HEAD></HEAD>
<FONT SIZE=5><B>HR ACCESS</B></FONT>
<BR>
<BODY TOPMARGIN=100 LEFTMARGIN=100>
L'accès au portail HRaSpace est temporairement indisponible.<BR>
Merci de votre compréhension.
<BR>
</BODY>
</HTML>