NullPointerException no JcrResourceResolverFactoryImpl.getResourceResolver no AEM

Problema

O seguinte erro é observado nos arquivos de log do 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

Isso acontece quando uma classe faz referência a uma instância da classe JcrResourceResolverFactory que foi desativada. Quando um componente é desativado e ativado novamente, uma nova instância é criada. Portanto, se alguém mantém a instância antiga, as referências são nulas e nunca mais definidas. Este NullPointerException acontece quando uma chamada de método é feita em um campo injetado via Felix SCR. O campo deve realmente ter um valor desde que a chamada do método foi iniciada a partir de uma chamada activate() que também é iniciada pelo SCR.

Resolução

Esse problema foi resolvido na versão 2.0.8 da biblioteca SCR do Apache Felix. Para corrigir o problema, instale a versão mais recente:

  1. Baixe a versão 2.0.8 do pacote felix.scr.
  2. Pare o AEM.
  3. Coloque o arquivo na pasta crx-quickstart/install da instância do AEM.
  4. Inicie o AEM.
Logotipo da Adobe

Fazer logon em sua conta