| Modifications apportées à ACE 1.2 après le 30 septembre 2006 | |
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.
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. |
Le paramétrage se fait par LOG4J. Pour bénéficier de ces timers, une mise à jour du fichier log4j est nécessaire.
< category name =" XSLTTimer " additivity =" false ">
< priority value =" info "/>
< appender-ref ref =" xsltTimer "/>
</ category >
< 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 >
< category name =" actionTimer " additivity =" false ">
< level value =" info "/>
< appender-ref ref =" actionTimer "/>
</ category >
< 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 "/>
< category name =" viewTimer " additivity =" false ">
< level value =" info "/>
< appender-ref ref =" viewTimer "/>
</ category >
< 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 >
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)
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.
Le socle est compatible avec la nouvelle version du parseur oracle 10g (10.1.0.4). Il reste compatible avec le parseur 9.
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.
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.
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 :
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.
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é.
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.
Public : Développement JAVA.
Tracer dans le log la pile d’appel lors d'anomalie violente durant une invocation d'API
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).
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.
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.
Pas de nouvelle librairie.
Pas de modification.
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.