由於Sling請求限制,內容片段模型無法儲存或載入
當Sling請求處理限制設定得太低時,內容片段模型無法儲存、無法顯示所有欄位或還原變更。 通常涉及兩個設定: sling.max.calls可控制編輯器進行多少後端呼叫,以及request.max.file.count可控制多部分儲存請求。 升級會重設這些限制或自訂OSGi設定覆寫這些限制,進而觸發錯誤,例如 TooManyCallsException 和FileCountLimitExceededExceptedException。 若要解決此問題,請提高受影響的Sling限制,移除衝突的設定覆寫,並確認編輯器載入並正確儲存。
說明 description
環境
- Adobe Experience Manager as a Cloud Service
- AEM Managed Services
- AEM 6.5內部部署
問題/症狀
- 錯誤記錄檔顯示
TooManyCallsException。 - 錯誤記錄檔顯示
FileCountLimitExceededException: attachment。 - 內容片段模型欄位未儲存。
- 重新開啟模型後,新欄位會消失。
- 當模型包含許多欄位時,編輯器未顯示所有索引標籤或欄位。
- 含有巢狀多清單的對話方塊中缺少 新增 按鈕。
原因
AEM使用Sling請求處理限制來防止過度執行請求和過大的多部分表單提交。 如果sling.max.calls太低,內容片段模型編輯器在載入或儲存複雜模型時超過允許的後端呼叫數,這會導致TooManyCallsException。 如果request.max.file.count太低,即使未上傳任何檔案,多部分儲存請求也會因FileCountLimitExceededException而失敗。 升級或自訂OSGi設定會重設或覆寫這些值,並導致問題傳回。
解決方法 resolution
若要解決由Sling請求限制引起的內容片段模型儲存或載入失敗,請按照以下步驟:
-
檢閱
error.log以識別發生哪個錯誤。 -
如果記錄顯示
TooManyCallsException,請增加Apache Sling主要Servlet中的sling.max.calls。- 若為AEM 6.5內部部署或AEM Managed Services,請開啟
/system/console/configMgr,找到Apache Sling Main Servlet,然後逐步增加Number of Calls per Request至更高的值,例如2000或3000。 - 針對AEM as a Cloud Service,請更新
ui.config專案中的org.apache.sling.engine.impl.SlingMainServlet.cfg.json,並將sling.max.calls設定為更高的值,例如2000或3000。
- 若為AEM 6.5內部部署或AEM Managed Services,請開啟
-
如果記錄顯示
FileCountLimitExceededException: attachment,請在Apache Sling要求引數處理中增加request.max.file.count。- 若為AEM 6.5內部部署或AEM Managed Services,請開啟
/system/console/configMgr,找到Apache Sling Request Parameter Handling,並將Maximum File Count設為10000。 - 針對AEM as a Cloud Service,請更新
ui.config專案中的org.apache.sling.engine.parameters.cfg.json,並將request.max.file.count設為10000。
- 若為AEM 6.5內部部署或AEM Managed Services,請開啟
-
檢查是否有衝突的自訂OSGi設定覆寫這些值並移除或修正它們。
-
在需要您的部署型別時重新啟動AEM,以套用更新的值。
-
新增欄位、儲存並重新開啟模型,以再次測試模型。
-
確認所有欄位都持續存在,且
error.log中未出現任何新錯誤。