Das Inhaltsfragmentmodell kann aufgrund von Sling-Anforderungsbeschränkungen nicht gespeichert oder geladen werden
Inhaltsfragmentmodelle können nicht gespeichert werden, alle Felder können nicht angezeigt werden oder Änderungen können rückgängig gemacht werden, wenn die Beschränkungen für die Sling-Anfrageverarbeitung zu niedrig eingestellt sind. Dazu gehören in der Regel zwei Einstellungen: sling.max.calls, die steuert, wie viele Backend-Aufrufe der Editor ausführt, und request.max.file.count, die mehrteilige Speicheranfragen steuert. Bei Upgrades werden diese Beschränkungen zurückgesetzt oder durch benutzerdefinierte OSGi-Konfigurationen überschrieben, wodurch Trigger wie TooManyCallsException und FileCountLimitExcededException. Um dies zu beheben, erhöhen Sie das betroffene Sling-Limit, entfernen Sie widersprüchliche Konfigurationsüberschreibungen und bestätigen Sie, dass der Editor korrekt geladen und gespeichert wird.
Beschreibung description
Umgebung
- Adobe Experience Manager as a Cloud Service
- AEM Managed Services
- AEM 6.5 On-Premise
Problem/Symptome
- Fehlerprotokolle werden
TooManyCallsExceptionangezeigt. - Fehlerprotokolle werden
FileCountLimitExceededException: attachmentangezeigt. - Felder des Inhaltsfragmentmodells werden nicht gespeichert.
- Neue Felder werden ausgeblendet, nachdem das Modell erneut geöffnet wurde.
- Der Editor zeigt nicht alle Registerkarten oder Felder an, wenn das Modell viele Felder enthält.
- Die Hinzufügen-Schaltfläche fehlt in Dialogfeldern mit verschachtelten Mehrfachlisten.
Ursache
AEM verwendet Sling-Anfrageverarbeitungsbeschränkungen, um sich vor übermäßiger Anfrageausführung und übergroßen mehrteiligen Formularübermittlungen zu schützen. Wenn die sling.max.calls zu niedrig ist, überschreitet der Editor für Inhaltsfragmentmodelle die zulässige Anzahl von Backend-Aufrufen beim Laden oder Speichern komplexer Modelle, was zu TooManyCallsException führt. Wenn die request.max.file.count zu niedrig ist, schlagen mehrteilige Speicheranfragen mit FileCountLimitExceededException fehl, selbst wenn keine Dateien hochgeladen werden. Bei Upgrades oder benutzerdefinierten OSGi-Konfigurationen werden diese Werte zurückgesetzt oder überschrieben, und das Problem tritt nicht mehr auf.
Lösung resolution
Gehen Sie wie folgt vor, um Speicher- oder Ladefehler des Inhaltsfragmentmodells zu beheben, die durch Sling-Anfragebeschränkungen verursacht werden:
-
Ermitteln Sie, welcher Fehler auftritt, indem Sie die
error.logüberprüfen. -
Wenn das Protokoll “
TooManyCallsException” anzeigt, erhöhen Siesling.max.callsim Apache Sling Main Servlet.- Öffnen Sie für AEM 6.5 On-Premise oder AEM Managed Services
/system/console/configMgr, suchen SieApache Sling Main Servletund erhöhen SieNumber of Calls per Requestschrittweise auf einen höheren Wert, z. B.2000oder3000. - Aktualisieren Sie für AEM as a Cloud Service
org.apache.sling.engine.impl.SlingMainServlet.cfg.jsonin Ihremui.config-Projekt und legen Siesling.max.callsauf einen höheren Wert fest, z. B.2000oder3000.
- Öffnen Sie für AEM 6.5 On-Premise oder AEM Managed Services
-
Wenn das Protokoll
FileCountLimitExceededException: attachmentanzeigt, erhöhen Sierequest.max.file.countin Apache Sling-Anfrageparameter-Verarbeitung.- Öffnen Sie für AEM 6.5 On-Premise oder AEM Managed Services
/system/console/configMgr, suchen Sie nachApache Sling Request Parameter Handlingund legen SieMaximum File Countauf10000fest. - Aktualisieren Sie für AEM as a Cloud Service
org.apache.sling.engine.parameters.cfg.jsonin Ihremui.config-Projekt und legen Sierequest.max.file.countauf10000fest.
- Öffnen Sie für AEM 6.5 On-Premise oder AEM Managed Services
-
Suchen Sie nach widersprüchlichen benutzerdefinierten OSGi-Konfigurationen, die diese Werte überschreiben und entfernen oder korrigieren.
-
Starten Sie AEM neu, wenn dies für Ihren Bereitstellungstyp erforderlich ist, damit die aktualisierten Werte angewendet werden.
-
Testen Sie das Modell erneut, indem Sie Felder hinzufügen, das Modell speichern und erneut öffnen.
-
Vergewissern Sie sich, dass alle Felder bestehen bleiben und keine neuen Fehler in der
error.logangezeigt werden.