問題点

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)

環境

AEM 6.2

原因

これは、アクティベートを解除された JcrResourceResolverFactory クラスのインスタンスへの参照をクラスが保持しているときに発生します。コンポーネントをアクティベート解除して再度アクティベートすると、新しいインスタンスが作成されます。したがって、古いインスタンスを保持したままにした場合、参照は null になり、再び設定されません。この NullPointerException は、Felix SCR 経由で挿入されたフィールドに対してメソッド呼び出しが行われると発生します。そのフィールドは値を持っていなければなりません。なぜなら、メソッド呼び出しは、同様に SCR によって開始される activate() 呼び出しで開始されているからです。

解決策

この問題は Apache Felix SCR ライブラリのバージョン 2.0.8 で解決されています。この問題を解決するには、新しいバージョンをインストールします。

  1. felix.scr バンドルのバージョン 2.0.8 をダウンロードしてください。
  2. AEM を停止します。
  3. AEM インスタンスの crx-quickstart/install フォルダーにファイルを配置します。
  4. AEM を起動します。

本作品は Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License によってライセンス許可を受けています。  Twitter™ および Facebook の投稿には、Creative Commons の規約内容は適用されません。

法律上の注意   |   プライバシーポリシー