AEM での JcrResourceResolverFactoryImpl.getResourceResolver で NullPointerException

問題点

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 を起動します。

 Adobe

ヘルプをすばやく簡単に入手

新規ユーザーの場合

Adobe MAX 2024

Adobe MAX
クリエイティブカンファレンス

10 月 14 日~ 16 日 マイアミビーチおよびオンライン

Adobe MAX

クリエイティブカンファレンス

10 月 14 日~ 16 日 マイアミビーチおよびオンライン

Adobe MAX 2024

Adobe MAX
クリエイティブカンファレンス

10 月 14 日~ 16 日 マイアミビーチおよびオンライン

Adobe MAX

クリエイティブカンファレンス

10 月 14 日~ 16 日 マイアミビーチおよびオンライン