大きなコンテナトリガーがJSONを分割すると、Adobe Experience Managerでコンポーネントの移動が失敗する

この記事では、Adobe Experience Manager(AEM)でページ内のコンポーネントを移動する際に、ページに多数のコンテンツノードが含まれている場合にエラーが発生し、一時的な回避策が提供される理由を説明します。

説明 description

AEMを使用する場合、多数のコンテンツノードを含むページ内のコンポーネントを移動すると、期待どおりに動作しません。 この問題は、コンテナ内のノード数がJSON用に設定された制限を超えると、Apache Sling GET サーブレット (DefaultGetServlet)で発生します。 デフォルトでは、この制限は1000 ノードに設定されています。 制限を超えると、コンテナの.infinity.json エンドポイントへのリクエストは、単一のJSON応答ではなく、複数の分割JSON ファイルへの参照を含む​ HTTP 300 ​応答を返します。 AEM オーサリング UIでは、このスプリットレスポンスが正しく処理されないため、コンポーネントの移動操作がサイレントで失敗します。

環境

  • Adobe Experience Manager(すべてのバージョン)

症状

  • 多数のノードを含むページ内でコンポーネントを移動しようとすると、何の効果もありません。
  • /container.infinity.jsonへのリクエストは、複数の分割JSON ファイルへの参照を含む​ HTTP 300 ​応答を返します。例:
  • /content/.../jcr:content/root/container.2.json
  • /content/.../jcr:content/root/container.1.json
  • /content/.../jcr:content/root/container.0.json

原因

DefaultGetServletでは、1つのJSON応答で返されるノードの数に制限が適用されます。 この制限を超えると、サーブレットはスプリットレスポンスを返しますが、これは現在、コンポーネントの移動操作中にAEM オーサリングワークフローで処理されません。

解決策 resolution

問題を解決するには、次の手順に従います。

  1. /system/console/configMgrでAEM Web コンソール設定にログインします。
  2. Apache Sling GET サーブレット (org.apache.sling.servlets.get.DefaultGetServlet)の設定を探します。
  3. json.maximumresultsの値を、最大コンテナ内のノードの合計よりも大きい数に増やします(例:1000から2000に増やします)。
  4. 設定を保存します。
  5. コンポーネントの移動操作を再試行して、正常に完了したかどうかを確認します。
  6. この問題の恒久的な修正に関するアップデートについては、今後のAEM Sites リリースノートを参照してください。
recommendation-more-help
experience-cloud-kcs-help-kbarticles