AEM as a Cloud Serviceでのデプロイメントエラーの解決
この記事では、リポジトリ初期化スクリプトのカスタマイズが原因で発生する、Adobe Experience Manager(AEM)as a Cloud Serviceのデプロイメントエラーについて説明します。 開発ステージに機能ブランチをデプロイする場合、これらのエラーが原因でデプロイメントが成功しなくなり、ログに簡単に表示できなくなる可能性があります。 デバッグログを分析すると、問題が修正される。
説明 description
環境
- 製品: Adobe Experience Manager(AEM)as a Cloud Service - Sites
- ステージ: 開発
- 制約: Felix コンソールを使用した直接変更は制限されています。
問題/症状
-
リポジトリー初期化エラーが原因で機能ブランチのデプロイメントに失敗する。
-
ログに次のようなメッセージが表示されます。
code language-none Exception in a SlingRepositoryInitializer, SlingRepository service registration aborted javax.jcr.RepositoryException: Applying repoinit operation failed despite retry; set loglevel to DEBUG to see all exceptions. Last exception message from "Configuration PID 310, script[ 0] " was: CreatePath execution failed at cq(sling:Folder): javax.jcr.nodetype.ConstraintViolationException: org.apache.jackrabbit.oak.spi.state.ReadyOnlyBuilderException: This builder is read-only... -
エラーは、リポジトリの読み取り専用ノードまたは不変部分の変更を試みたことを示します。
解決策 resolution
この問題を解決するには、次の手順に従います。
-
repo-init 操作のログレベルを
DEBUGに設定して、リポジトリの初期化中に詳細な例外情報を取得します。 Felix コンソールを介した直接アクセスは制限されているので、プロジェクト内でカスタムログ設定を使用します。 -
プロジェクトの
/apps/<your-project>/config/フォルダーに OSGi 設定ファイル(com.adobe.granite.logging.impl.LogManagerFactory.configなど)を作成します。-
このファイルに次のプロパティを含めます。
code language-none loggers=[ "org.apache.sling.jcr.repoinit.impl.RepositoryInitializerFactory"] org.apache.sling.jcr.repoinit.impl.RepositoryInitializerFactory.log.level=DEBUG
-
-
更新された設定をCloud Managerを通じてデプロイし、デプロイ後に repo-init 操作の詳細なデバッグログが表示されることを確認します。
-
デバッグログで、リポジトリの初期化中のエラーに関する追加のコンテキストを確認し、権限のない変更の兆候や読み取り専用ノードの変更の試みを探します。
-
repo-init スクリプトが、リポジトリの不変部分(システムパスなど)内のノードの作成または変更を試みないことを確認します。
-
CreatePathとして定義されたノードをターゲットとするcq(sling:Folder)コマンドが読み取り専用領域にある場合は、それらのコマンドを削除または調整します。 新しいノードまたは構造を追加する必要がある場合は、許可されたパスにデプロイされたコンテンツパッケージを使用して、これらの変更を個別にパッケージ化します。
次の手順は、AEMのシステムパスの制約を考慮しながら、デプロイメントエラーを特定して修正するのに役立ちます。