AEM オーサーカスタムサーブレットページが、Experience Cloud シェルでのスピナーの読み込み時に停止する

Experience Cloud Shell iframeを介してアクセスした場合に、AEM オーサーのカスタムサーブレットのページが読み込み中のスピナーで停止したままになる場合の問題を解決する方法を説明します。

説明 description

AEM オーサーからカスタムサーブレットまたはHTML ページにアクセスする場合、ページはExperience Cloud Shell iframe内で読み込まれます。 この場合、HTML コンテンツがiframe内に存在する場合でも、ページが読み込み中のスピナーオーバーレイで停止したままになります。 この問題は、統合シェルが有効になっている場合に複数のユーザー間で再現可能であり、サーブレットコードに最近の変更はありません。 追加のURL パラメーター(_mrやshell_domainなど)が自動的に追加されます。 同じサーブレット URLを新しいブラウザータブ(統合シェルのコンテキスト外)で直接開くと、スピナーなしでページが正しくレンダリングされます。 統合シェルを無効にするか、ダイレクトリソースパスを介してサーブレットにアクセスすると、ページが期待どおりにレンダリングされます。

環境

  • Adobe Experience Manager (AEM) オーサー
  • AEM as a Cloud Service(AEMaaCS)とオンプレミスのデプロイメント

症状

  • Experience Cloud Shell iframeを介してアクセスした場合、カスタムサーブレットページは読み込み中のスピナーオーバーレイの後ろに隠れたままになります。
  • HTML コンテンツはiframe内に存在しますが、表示されません。
  • サーブレット URL (シェル外)への直接アクセスは期待どおりに機能します。

原因

Experience Cloud Unified Shellは、読み込まれたページからコンテンツ準備完了シグナルを想定して、スピンオーバーレイを却下します。 標準のAEM エディターフレームワーク JavaScriptを読み込まないカスタムサーブレット応答では、このシグナルは送信されないため、スピナーは無期限に残ります。 サーブレットに直接(シェルの外側で)アクセスすると、この問題が回避されます。

解決策 resolution

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

  1. Experience Cloud シェルルートを介してカスタムサーブレットにアクセスします(例:/ui#/aem/your/servlet/path)。
  2. HTML コンテンツがiframe内に存在するにもかかわらず、ページが読み込み中のスピナーオーバーレイで停止したままかどうかを確認します。
  3. ブラウザーの「ネットワーク」タブから、完全なサーブレット URL (追加されたパラメーターを含む)をコピーします。
  4. このURLを(統合シェルのコンテキスト外の)新しいブラウザータブで直接開きます。
  5. ページがスピナーなしで正常にレンダリングされることを確認します。
  6. リンク、ブックマーク、またはナビゲーションパスを更新して、統合シェルをバイパスして、サーブレットのリソースパス(例:/content/your/site/servlet.html)を直接指すようにします。
  7. AEM環境の他の部分に統合シェルが必要な場合は、この回避策をカスタムサーブレットのワークフローのみに制限してください。 AEMのページ/コンテンツツリーナビゲーションではなく、プレーンリンクまたは別のブラウザータブを介してサーブレットにアクセスすることを確認します。これにより、シェルラッピングルートが生成されます。
  8. (オプション) window.top、window.parent、または類似の構成に依存する可能性があるサーブレット出力のクライアントサイドコードを確認します。これらは、統合シェル iframe内で異なる動作する可能性があります。

この回避策を適用した後、ユーザーは読み込み中にスタックしたスピナーを見つけることなく、カスタムサーブレットページにアクセスできる必要があります。

recommendation-more-help
experience-cloud-kcs-help-kbarticles