Problema
Il seguente errore viene osservato nei file di registro 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)
Ambiente
AEM 6.2
Causa
Questo accade quando una classe contiene riferimenti a un'istanza di classe JcrResourceResolverFactory che è stata disattivata. Quando un componente viene disattivato e nuovamente riattivato, viene creata una nuova istanza. Pertanto, se qualcuno mantiene la vecchia istanza, i riferimenti sono nulli e non vengono più impostati. Questo NullPointerException avviene quando si effettua una chiamata del metodo su un campo inserito tramite Felix SCR. Il campo avrà realmente un valore in quanto la chiamata del metodo è stata iniziata da una chiamata activate(), che è iniziata anche da SCR.
Risoluzione
Questo problema è stato risolto nella versione 2.0.8 della libreria Apache Felix SCR. Per risolvere il problema, installa la versione più recente:
- Scarica la versione 2.0.8 del pacchetto felix.scr.
- Interrompi AEM.
- Posizionare il file nella cartella crx-quickstart/installazione dell'istanza AEM.
- Avviare AEM.