Problème
Même après la mise à jour du code avec succès dans crx/de, le code Sightly récemment déployé ne se reflète pas le site AEM. Le site affiche toujours le code Sightly antérieur sur certaines instances de publication.
Environnement
AEM 6.1, 6.2, 6.3
Cause
Depuis que le code est déployé correctement dans toutes les instances de publication, le problème se présente avec la recompilation du code Sightly sur une ou plusieurs occurrences.
Chaque fois qu'un déploiement de code a lieu dans une instance AEM, le code récemment déployé doit forcer la recompilation d’un code existant lorsque la page associée est demandée. Il existe un problème connu avec Sightly [1], qui ne détecte pas correctement le code nouvellement ajouté et qui ne force alors pas une recompilation.
[1] https://issues.apache.org/jira/browse/SLING-6612
Résolution
La solution complète pour ce problème est disponible dans la publication AEM qui comprend la version Scripting HTL Engine 1.0.34. Dans le même temps, incluez les étapes suivantes au processus de déploiement pour garantir une expérience uniforme sur toutes les instances AEM.
- Placez le script [2] dans le répertoire d’installation AEM et accordez des privilèges à l’utilisateur AEM pour son exécution.
- Accédez à l’emplacement où le script est placé sur le serveur AEM et exécutez-le à l’aide de la commande suivante. Dans l’exemple suivant, le script d’exemple est placé dans le répertoire d’installation d‘AEM.
./cq-force-recompilation.sh crx-quickstart/ http://localhost:4526 admin:admin
- La sortie ressemble à ce qui suit :
stopping the org.apache.sling.commons.fsclassloader bundle... deleting file sytem classes cache: /Users/ anearora /Desktop/AEM/6.2/TestServer/ crx -quickstart/launchpad/ felix /bundle305/data/classes ... deleting /var/classes in the JCR... starting the org.apache.sling.commons.fsclassloader bundle...
Elle efface les bibliothèques précédemment compilées et force les bibliothèques mises à jour à compiler lorsque la page associée est demandée.
[2] force-recompilation.sh
#!/bin/bash if [[ $# -ne 3 || $1 == "-h" ]]; then echo "Usage: force-recompilation.sh <crx-quickstart-dir> <http://server:port> <user:password>" echo echo "Example arguments: crx-quickstart/ http://localhost:4502 admin:admin" echo echo "This will force a recompilation of all Sling scripts (jsps, java, sightly etc.)." exit fi dir="$1" host="$2" user="$3" if [ ! -d "$dir/../crx-quickstart" ]; then echo "No crx-quickstart directory found." exit fi echo "stopping the org.apache.sling.commons.fsclassloader bundle..." bundle="org.apache.sling.commons.fsclassloader" curl -f -s -S -u $user -F action=stop $host/system/console/bundles/$bundle > /dev/null exitCode=$? if [ $exitCode -ne 0 ]; then echo if [ $exitCode -eq 22 ]; then echo "Invalid admin password." fi echo "aborted."; exit fi cd "$dir" classesDir=`find launchpad/felix -path "*/bundle*/data/classes" -type d` if [ -d "$classesDir" ]; then echo "deleting file sytem classes cache: `pwd`/$classesDir ..." rm -rf "$classesDir" else echo "file system classes cache empty or already cleared" fi echo "deleting /var/classes in the JCR..." curl -f -s -S -u $user -X DELETE $host/var/classes > /dev/null echo "starting the org.apache.sling.commons.fsclassloader bundle..." curl -f -s -S -u $user -F action=start $host/system/console/bundles/$bundle > /dev/null if [ $? -ne 0 ]; then echo echo "aborted, bundle was likely not restarted."; exit fi echo "done."
Accéder à votre compte