RELEASE NOTES 1.2

Contexte

Ce socle se nomme v6.2.0 en référence à la version web qui est la cible de ce développement.

Cette version est destinée à être mise en production pour la version 1.2.0.

NouvelleS traceS de type TIMER

Définition

Afin d’affiner la recherche des problèmes de performances, trois nouvelles catégories transversales sont disponibles :

Nom du timer Fonctionnalité.
XSLTTimer Permet de mesurer le temps de parsing d’une feuille de style. Inclus le temps de chargement de la feuille principale et des feuilles importés par la feuille principale.
actionTimer Permet de mesurer le temps d’exécution de chaque action de cinématique.
viewTimer Permet de mesurer le temps de génération du flux de présentation vue par vue.

Paramétrage

Le paramétrage se fait par LOG4J. Pour bénéficier de ces timers, une mise à jour du fichier log4j est nécessaire.

Le timer XSLTTimer

  • Définition de la catégorie XSLTTimer :

< category name =" XSLTTimer " additivity =" false ">

< priority value =" info "/>

< appender-ref ref =" xsltTimer "/>

</ category >

  • Exemple de définition du nouvel appender.

< appender name =" xsltTimer " class =" org.apache.log4j.DailyRollingFileAppender ">

< param name =" File " value =" log/xsltTimer.log "/>

< param name =" DatePattern " value =" yyyy-MM-dd'.' "/>

< layout class =" org.apache.log4j.PatternLayout ">

< param name =" ConversionPattern " value =" [%d]¤ %X{STYLESHEET_REF}¤%X{ELAPSE_TIME}¤%X{REQUEST_CINEMATIC}%n "/>

</ layout >

</ appender >

Le timer actionTimer

  • Définition de la catégorie actionTimer

< category name =" actionTimer " additivity =" false ">

< level value =" info "/>

< appender-ref ref =" actionTimer "/>

</ category >

  • Exemple de définition du nouvel appender

< appender name =" actionTimer " class =" org.apache.log4j.DailyRollingFileAppender ">

< param name =" File " value =" log/actionTimer.log "/>

< param name =" DatePattern " value =" yyyy-MM-dd'.' "/>

< layout class =" org.apache.log4j.PatternLayout ">

< param name =" ConversionPattern " value =" [%d]¤ %X{ACTION_NAME}¤%X{ELAPSE_TIME}¤%X{REQUEST_CINEMATIC}%n "/>

Le timer viewTimer

  • Définition de la catégorie viewTimer

< category name =" viewTimer " additivity =" false ">

< level value =" info "/>

< appender-ref ref =" viewTimer "/>

</ category >

  • Exemple de définition du nouvel appender

< appender name =" viewTimer " class =" org.apache.log4j.DailyRollingFileAppender ">

< param name =" File " value =" log/viewTimer.log "/>

< param name =" DatePattern " value =" yyyy-MM-dd'.' "/>

< layout class =" org.apache.log4j.PatternLayout ">

< param name =" ConversionPattern " value =" [%d]¤ %X{VIEW_NAME}¤%X{ELAPSE_TIME}¤%X{REQUEST_CINEMATIC}%n "/>

</ layout >

</ appender >

Activation des traces

L’activation de ces traces s’inscrit dans la continuité de l’existant. Ces traces sont par défaut inactive. Une cinématique particulière permet de les activer. Comme les traces Timer existantes, elle utilise l’action trace_enable. Les syntaxes permettant d’activer ces traces sont les suivantes :

trace_enable(XSLTTimer)

trace_enable(actionTimer)

trace_enable(viewTimer)

Exemple de cinématique permettant d’activer l’ensemble des traces :

cinematic=trace_reload();trace_enable(data);trace_enable(timer);trace_enable(XSLTTimer); trace_enable(actionTimer);trace_enable(viewTimer);forward(0)

Amélioration des performances

Nouveau cache.

Performance.

Mise en cache des feuilles de styles importés par les feuilles principales. Ce cache est transparent pour l’utilisateur, mais pas pour les performances. Ce nouveau cache nécessite le chargement des fichiers xsl via un outputStream.

Compatibilité avec le parseur 10g

Le socle est compatible avec la nouvelle version du parseur oracle 10g (10.1.0.4). Il reste compatible avec le parseur 9.

Prise en compte de la balise <xsloutput indent=false>

M/2678. L’attribut indent est maintenant pris en compte. Cela permet de réduire la taille du flux HTML entre le serveur l’appli et le navigateur. Cet attribut est déjà positionné dans egx.xsl.

Double requête consommatrice sur les VO Dynamiques.

M/2827. Le principe des ViewObject dynamique oblige à récupérer les caractéristiques des champs via un appel JDBC. Dans le cas de requêtes contenant des ordres tels que group by, order by, etc, il y a exécution de la requête pour récupérer ces caractéristiques. Une modification de l’appel permet d’éviter cette première exécution.

Pour que cette modification soit effective, la requête dynamique ne doit pas commencer par « select * from ».

Un message d’erreur est écrit dans le log en cas de requête qui ne bénéficie pas de cette amélioration afin d’alerter le développeur mais l’application continue de fonctionner.

Eviter l’apparition de session http parasites

M/2730. Des modifications internes évitent l’apparition de session http parasite en cas d’anomalies liées à la fin de vie de la session :

  • En cas d'erreur technique ou fonctionnelle avant l’exécution de la requête demandé, la session http est supprimée.
  • Ajout d'une synchronisation lors de la recherche d’une session http existante

Divers

Utilisation de LOG4J

A partir de la version 1.2, l’ensemble des traces du socle sont gérés par LOG4J. Cela permet une gestion plus fine des traces en cas d’anomalie.

Amélioration des remontés d’exceptions

Amélioration de l'affichage des exceptions lors du contrôle de licence.

Public : Installation client.

Le contrôle des licences utilisent des package java particulier liés au cryptage. Ces packages ne sont pas disponibles par défaut dans tous les JDK. Des nouvelles traces permettent de mieux cerner l’absence de ces packages ou des problèmes rencontrés lors du décodage de la clé.

Amélioration de l'affichage des exceptions de type XSLException

Public : Développement style.

En cas d’anomalie lors du parsing de la feuille de style, le socle affiche l’ensemble des anomalies rencontrées.

Invocation d’une API

Public : Développement JAVA.

Tracer dans le log la pile d’appel lors d'anomalie violente durant une invocation d'API

Contrôle de cohérence de la cinématique/configuration

Public : Développement style.

Une exception est levée dans le cas où une action delete() est appliquée sur une vue à rechargement permanent (executeQuery=always).

Contrôle de cohérence de la configuration des graphiques

Public : développement graphique.

Pour les graphiques de type catégorie : pour éviter un problème de largeur lors de l'affichage de plusieurs barres par "catégorie", les requêtes XPATH des <categoryNamed@nameXpath > ne doivent ramener qu'une valeur. Au lieu d’avoir un problème d’affichage, une exception est levée.

Correctifs

P/513942

Non fonctionnement des webservice dans le cas d’appels répétitifs.

Causé par la non libération d’un ApplicationModule.

P/513974

Correction dans la requête SQL générée pour le contrôle des licences par entity/webmodule.

Provoquait une SQLException.

M/2778

Mauvaise identification du nom de machine dans le egx.log.

M/2955

Non fonctionnement des Services Web avec Oracle AS 10 G Release 2.

M/3134

Gestion de l'UTF8 des paramètres de type chp.

Le codage des champs issus du noeud <temporaire> du flux de présentation n'est pas correct. Ils sont en UTF-8 alors que les requêtes HTTP sont nativement géré en ISO. Le champs du neoud <temporaire> sont géré en ISO pour conserver la cohérence avec la requête HTTP.

Evolution des Librairies

Pas de nouvelle librairie.

Evolution de la configuration

Pas de modification.

Impact client et developpeur

Ces modifications sont transparentes pour le client hormis la modification liée aux ViewObjects dynamiques qui nécessite la modification des requêtes SQL pour être effective. (ref M/2827).

Il n’y a pas de modifications à faire dans le code métier pour bénéficier des améliorations.