NullPointerException à JcrResourceResolverFactoryImpl.getResourceResolver dans AEM

Problème

L'erreur suivante est observée dans les fichiers journaux AEM :

31.05.2017 17:00:00.003 *ERROR* [sling-default-1000-HourlySnapshotJob] org.apache.sling.commons.scheduler.impl.QuartzScheduler Exception during job execution of com.day.cq.reporting.impl.snapshots.SnapshotServiceImpl$2@1a639a76 : null
java.lang.NullPointerException: null
at org.apache.sling.jcr.resource.internal.JcrResourceResolverFactoryImpl.getResourceResolver(JcrResourceResolverFactoryImpl.java:125)
at org.apache.sling.jcr.resource.internal.JcrResourceResolverFactoryImpl.getResourceResolver(JcrResourceResolverFactoryImpl.java:94)
at com.day.cq.reporting.impl.snapshots.SnapshotServiceImpl.executeSnapshot(SnapshotServiceImpl.java:274)
at com.day.cq.reporting.impl.snapshots.SnapshotServiceImpl$2.run(SnapshotServiceImpl.java:160)
at org.apache.sling.commons.scheduler.impl.QuartzJobExecutor.execute(QuartzJobExecutor.java:118)
at org.quartz.core.JobRunShell.run(JobRunShell.java:202)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)

Environnement

AEM 6.2

Cause

Cela se produit lorsqu'une classe contient une référence à une instance de classe JcrResourceResolverFactory qui a été désactivée. Lorsqu'un composant est désactivé et réactivé, une nouvelle instance est créée. Par conséquent, si quelqu'un conserve l'ancienne instance, les références sont nulles et ne sont plus jamais redéfinies. Ce fichier NullPointerException se produit lorsqu'un appel de méthode est effectué sur un champ injecté via Felix SCR. Le champ devrait réellement avoir une valeur puisque l'appel de méthode a été lancé à partir d'un appel de méthode activate() qui est également lancé par SCR.

Résolution

Ce problème est résolu dans la version 2.0.8 de la bibliothèque Apache Felix SCR. Pour résoudre le problème, installez la version la plus récente :

  1. Téléchargez version 2.0.8 du lot felix.scr.
  2. Arrêtez AEM.
  3. Placez le fichier dans le dossier crx-quickstart/install de l'instance AEM.
  4. Démarrez AEM.
Logo Adobe

Accéder à votre compte