Problème démarrage HotReload Nuxeo

De EjnTricks

Suite à une installation locale de Nuxeo et nue mulittude de redéploiement de l'instance, après modification dans le Studio, il se peut que le démarrage / otreload ne fonctionne plus.

Cet article présente un correctif sur l'installation de base qui a permis de ne plus avoir de problème de démarrage.


Hand-icon.png Votre avis

Nobody voted on this yet

 You need to enable JavaScript to vote


Study icon.png Etude

Suite aux multiples redéploiements, les modifications faites dans le Studio n'étaient pas visibles et l'application ne démarrait plus. Avec la console activée, il est constaté un message d'erreur lors du démarrage, fichier console.log.


En ouvrant ce fichier dans un éditeur de texte, le message donne un peu plus d'information.

ERROR [NuxeoLauncherGUITask-7] [org.nuxeo.launcher.NuxeoLauncher] Server start failed with command: 
["c:\Apps\Nuxeo\10.10\3rdparty\java\jre\bin\java", "-Xms512m", "-Xmx1024m", "-Dfile.encoding=UTF-8", "-Dmail.mime.decodeparameters=true",
"-Dnet.sf.ehcache.skipUpdateCheck=true", "-Djava.util.Arrays.useLegacyMergeSort=true", "-Dsun.net.http.retryPost=false", "-cp",
".;c:\Apps\Nuxeo\10.10\nxserver\lib;c:\Apps\Nuxeo\10.10\bin\bootstrap.jar;c:\Apps\Nuxeo\10.10\bin\tomcat-juli.jar", "-Dnuxeo.home=c:\Apps\Nuxeo\10.10",
"-Dnuxeo.conf=C:\ProgramData\Nuxeo\conf\nuxeo.conf", "-Dnuxeo.log.dir=C:/ProgramData/Nuxeo/logs", "-Dnuxeo.data.dir=C:/ProgramData/Nuxeo/data",
"-Dnuxeo.tmp.dir=C:/ProgramData/Nuxeo/tmp", "-Dnuxeo.mp.dir=c:\Apps\Nuxeo\10.10\packages", "-Djava.io.tmpdir=C:/ProgramData/Nuxeo/tmp",
"-Dcatalina.base=c:\Apps\Nuxeo\10.10", "-Dcatalina.home=c:\Apps\Nuxeo\10.10", "org.apache.catalina.startup.Bootstrap", "start"]

Dans le cadre de cet article, l'instance est installée sous c:\Apps\Nuxeo\10.10.

Toutefois, le message ne donne pas d'informations utiles. En démarrant l'instance sans la console, la trace d'exécution est la suivante.

nuxeoctl.bat start --gui false
c:\Apps\Nuxeo\10.10\bin>"c:\Apps\Nuxeo\10.10\3rdparty\java\bin\java.exe"  "-Xbootclasspath/a:c:\Apps\Nuxeo\10.10\3rdparty\java\lib\tools.jar"
-Dlauncher.java.opts="-Xms512m -Xmx1024m -Dfile.encoding=UTF-8 -Dmail.mime.decodeparameters=true -Dnet.sf.ehcache.skipUpdateCheck=true
-Djava.util.Arrays.useLegacyMergeSort=true -Dsun.net.http.retryPost=false" -Dnuxeo.home="c:\Apps\Nuxeo\10.10" -Dnuxeo.conf="C:\ProgramData\Nuxeo\conf\nuxeo.conf"
-Dnuxeo.log.dir="C:/ProgramData/Nuxeo/logs" -Dlog.id="-15052019_18092435" -jar "C:/ProgramData/Nuxeo/tmp\nuxeo-launcher-24538.jar" start --gui false

Nuxeo home:          c:\Apps\Nuxeo\10.10
Nuxeo configuration: C:\ProgramData\Nuxeo\conf\nuxeo.conf
Include template: c:\Apps\Nuxeo\10.10\templates\common-base
Include template: c:\Apps\Nuxeo\10.10\templates\common
Include template: c:\Apps\Nuxeo\10.10\templates\postgresql
Include template: c:\Apps\Nuxeo\10.10\templates\drive
Configuration files generation (nuxeo.force.generation=true)...
Configuration files generated.
Server start failed (1).
Error occurred during initialization of VM
Could not reserve enough space for 1048576KB object heap

Il apparaît donc clairement que le problème concerne la mémoire.


Java format icon.png Java embarqué

Pour cette installation, aucune variable d'environnement relative à Java n'est mise en place, JAVA_HOME ou JRE_HOME. Ainsi, c'est la version embarquée dans l'instance Nuxeo qui est utilisée, comme l'indique la ligne commande c:\Apps\Nuxeo\10.10\3rdparty\java\bin\java.exe.

L'argument -version va permettre de connaitre la version précise.

c:\Apps\Nuxeo\10.10\bin>c:\Apps\Nuxeo\10.10\3rdparty\java\bin\java.exe -version
openjdk version "1.8.0_191-1-ojdkbuild"
OpenJDK Runtime Environment (build 1.8.0_191-1-ojdkbuild-b12)
OpenJDK Server VM (build 25.191-b12, mixed mode)

Il est alors constaté que la version est un OpenJDK mais surtout en version 32 bits. De nos jours, il est quand même courant que les systèmes soient en 64 bits et il paraît donc nécessaire de basculer sur ce type d'instance.


Download-icon.png Installation OpenJDK

Une version 64 bits doit être téléchargée et installée sur la plateforme. Afin de rester dans le même écosystème de Nuxeo, les paquets générés par ojdk sont recherchés et peuvent se trouver à l'adresse https://github.com/ojdkbuild/ojdkbuild.

Afin d'être conforme avec la version embarquée dans Nuxeo, le paquet ZIP, en version 64 bits, de la release java-1.8.0-openjdk-1.8.0.191-1.b12 est téléchargée puis décompresser dans le répertoire C:\Apps\Java\ojdk-openjdk-1.8.0.181.

A noter qu'il existe une multitude de projets mettant à disposition des paquets comme ceux-ci.


Configuration-icon.png Configuration Nuxeo

Une fois mise en place, il est nécessaire de configurer Nuxeo pour utiliser cette nouvelle version. Pour cela, il suffit d'éditer le fichier nuxeo.conf, par défaut dans le répertoire C:\ProgramData\Nuxeo\conf pour une installation sous Windows, et modifier la valeur du paramètre JAVA_HOME, soit les modifications suivantes dans le cadre de cet article.

##-----------------------------------------------------------------------------
## Java
##-----------------------------------------------------------------------------
#JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-amd64
#JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_152.jdk/Contents/Home
JAVA_HOME=C:/Apps/Java/ojdk-openjdk-1.8.0.191

Ainsi, c'est une version 64 bits qui est utilisée pour démarrer Nuxeo et les problèmes de mémoire ne sont plus rencontrés. A noter qu'aucune configuration n'a été réalisée en rapport à la taille de la mémoire de la JVM.