18 mars 2013

Choisir la version de JVM utilisée par le client riche de HRaSpace


Il est fréquent d'être contraint à une migration de version HR Client du fait d'une incompatibilité avec la version de JVM déployée sur le site.



Si vous êtes maître de votre poste vous pouvez installer / modifier le choix de la JVM activée (control panel / java). Toutefois cela peut poser problème à d'autres applications.


Dans le cas d'un ensemble de postes "matricés", mettre à jour le poste n'est pas possible. Il peut être intéressant de déployer une mise a jour "temporaire" de HRaSpace forçant le navigateur à utiliser une ancienne JVM...
En effet, si plusieurs version de JVM sont disponibles sur le poste client - un paramètre "java_version" dans les balises <APPLET> ou <OBJECT> de la page permet de préciser au navigateur une préférence dans le choix de la JVM à utiliser.

A lire : http://www.oracle.com/technetwork/java/javase/index-141751.html#JAVA_VERSION_EXAMPLES

Merci à Michel pour son analyse et ses tests (faits sous HRaSpace v7) ...


Analyse


Deux applets sont concernées :
  • BootstrapApplet. Cette applet prend la forme d'un fichier .class. Elle n'est appelée qu'une seule fois, à l'entrée dans le rich-client, via la page webapps/hr-rich-client/bootstrapapplet.html
Dans cet exemple on ajoute le paramètre java-version, avec la valeur 1.6* pour forcer le navigateur à utiliser une JVM 6 :

<HTML>
<HEAD>
<BODY>
<APPLET ID="BootstrapApplet" CODE="BootstrapAppletHRAccess" height="0" width="0">
<PARAM name="java_version" value="1.6*">
</APPLET>
</BODY>
</HTML>


  • HRAPPLET : Elle est utilisée par le client riche en tâche de fond. Elle est appelée après le BootstrapApplet dans le rich-client, par la page webapps/hr-rich-client/appletbeasun.html. Une classe de HRAPPLET (com.hraccess.webclient.applets.AppletHRAccess) fait des "includes" de toutes les autres classes de l’applet.

Dans cet exemple on ajoute le paramètre java-version, avec la valeur 1.6* pour forcer le navigateur à utiliser une JVM 6 (Attention : il faut éventuellement modifier le clsid, car il est lié à la version de java).

document.write('<!--[if !IE]>-->');
document.write('<OBJECT WIDTH="500" HEIGHT="200" ID="DataAccess" NAME="DataAccess" classid="java:com.hraccess.webclient.applets.AppletHRAccess" archive="hrapplet.jar">');
document.write('<PARAM Name="TOPICURL" VALUE="'+sTopicUrl+'">');
document.write('<PARAM name="java_version" value="1.6*">');
document.write('<!--<![endif]-->');
document.write('<OBJECT WIDTH="500" HEIGHT="200" ID="DataAccess" NAME="DataAccess" classid="clsid:CAFEEFAC-0016-0000-FFFF-ABCDEFFEDCBA">');
document.write('<PARAM name="code" value="com.hraccess.webclient.applets.AppletHRAccess">');
document.write('<PARAM NAME="archive" VALUE="hrapplet.jar">');
document.write('<PARAM Name="TOPICURL" VALUE="'+sTopicUrl+'">');
document.write('<PARAM name="java_version" value="1.6*">');




A noter : 3 autres applets sont utilisées en standard dans l'application HRaSpace v7. Mais leur appel est généré lors de la publication - donc non modifiable. Heureusement celles ci sont moins sensibles aux changements de version de JVM :
  • StatusBar une petite applet qui (a priori) affiche l'évolution lors du chargement d'une population via une barre de défilement. Elle est appelée en dur dans presque toutes les pages :
Par exemple : hr-rich-client/protected/TA0FR/F/FRP/HTMLPOPUP/DETAIL/ASB000D1/FS001/asp00fch.html
 

document.write('<APPLET CODE="StatusBar" CODEBASE=".." ID="StatusBar" CLASS="STATUS_BACKGROUND" STYLE
  • APGRAPH permet d'afficher des graphes. Elle est définie dans HR comme une 'Ressource Web' , et et est utilisée dans quelques pages, notamment lors des comparaison de compteurs GTA (page AGW05C01).
Ce qui donne suite à publication : hr-rich-client/protected/TA0FR/F/FRP/TA01000F/TA180000/AG00000X/body_ag232000.html

<APPLET CODE="RunGraph" ARCHIVE="../apgraph.zip" WIDTH="738" HEIGHT="351" MAYSCRIPT="true" ID="Z*applet" STYLE="width:738;height:351;">

  • APPLAN est utilisée à deux endroits pour afficher des tableaux (calendriers). C'est aussi un objet défini dans HR sous la forme d'une 'Ressource Web'.

Tests


Pour visualiser simplement la version de la JVM utilisée, activez la console java .

Ensuite, au démarrage du client riche ...
Si la JVM demandée (1.6* dans notre exemple) n'est pas disponible sur le poste, vous obtiendrez :





Sinon le système vous demandera confirmation :





Puis le client riche s'ouvrira normalement.

Évidemment, avec de telles pop-up, il est clair qu'avant de déployer ce type de solution il faut avoir informé l'utilisateur de ce que l'on attend de lui ! Sous cette forme cette solution ne semble pouvoir être que temporaire - le temps de disposer et déployer une version HR Client compatible avec la dernière release Java de la matrice.

4 commentaires:

  1. est ce que c'est applicable pour hra v5

    RépondreSupprimer
  2. Comme dit, c'est une potentialité Java - pas de lien direct avec HR.
    Tu peux bien sûr tester sur HRv5 et nous dire les résultats de tes expériences ...

    RépondreSupprimer
  3. Salut Damien !
    Il a fallu que je baisse le niveau de sécurité de java (par défaut : Elevé). Il faut le placer à Moyenne.
    Et.... ça marche sur :
    - HRaSuite 7 avec release client 7.17.4009 (JRE 1.6.0_21 et JRE 1.7.0_40)
    - HRaSuite 9 avec release client 7.30.3004 (JRE 1.6.0_21 et JRE 1.7.0_40)

    Cordialement,

    José P. ICRH pour la SNCF

    RépondreSupprimer
  4. Salut Damien,

    Pour info, sur un PC windows XP où sont installés deux JRE (JRE 1.6.0_16 et JRE 1.7.0_51) HRSuite 9 lance plusieurs processus javas:
    - 1.7.0_51 pour le plugin java.
    - 1.6.0_16 pour la première applet.
    - 1.6.0_16 pour la deuxième applet.

    RépondreSupprimer