由于Sling请求限制,内容片段模型无法保存或加载

当Sling请求处理限制设置得太低时,内容片段模型无法保存、无法显示所有字段或还原更改。 通常涉及两个设置:sling.max.callsrequest.max.file.count,前者控制编辑器进行多少后端调用,后者控制多部分保存请求。 升级会重置这些限制或自定义OSGi配置覆盖它们,这将触发错误,如​ TooManyCallsException ​和​FileCountLimitExceededExcepted。 要解决此问题,请提高受影响的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请求限制导致的内容片段模型保存或加载失败的问题,请执行以下步骤:

  1. 通过查看error.log识别发生的错误。

  2. 如果日志显示TooManyCallsException,请增加Apache Sling主Servlet中的sling.max.calls

    • 对于AEM 6.5内部部署或AEM Managed Services,请打开/system/console/configMgr,找到Apache Sling Main Servlet,然后递增到更高的值,如20003000,并逐步增加Number of Calls per Request
    • 对于AEM as a Cloud Service,请更新ui.config项目中的org.apache.sling.engine.impl.SlingMainServlet.cfg.json,并将sling.max.calls设置为更高的值,如20003000
  3. 如果日志显示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
  4. 检查是否存在覆盖这些值的冲突自定义OSGi配置,并删除或更正它们。

  5. 在需要您的部署类型时重新启动AEM,以应用更新的值。

  6. 通过添加字段、保存和重新打开模型来再次测试模型。

  7. 确认所有字段都保持不变,error.log中不会出现任何新错误。

相关阅读

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