Adobe Experience Manager (AEM) verfügt über einen standardmäßigen Fehler-Handler für die Verarbeitung von HTTP-Fehlern, z. B. durch Anzeige von:
Das System stellt Skripte (unter /libs/sling/servlet/errorhandler
) bereit, um auf Fehler-Codes zu reagieren. Standardmäßig sind folgende Skripte mit einer Standard-CQ-Instanz verfügbar:
AEM basiert auf Apache Sling. Siehe Umgang mit Fehlern für detaillierte Informationen zur Sling-Fehlerbehandlung.
Auf einer Autoreninstanz muss die CQ WCM Debug Filter ist standardmäßig aktiviert. Das Ergebnis ist immer der Antwort-Code 200. Der standardmäßige Fehler-Handler antwortet, indem er den vollständigen Stacktrace in die Antwort schreibt.
Auf einer Veröffentlichungsinstanz lautet der CQ WCM Debug Filter always deaktiviert (auch wenn als aktiviert konfiguriert).
Sie können Ihre eigenen Skripte erstellen, um die Seiten anzupassen, die der Fehler-Handler anzeigt, wenn ein Fehler auftritt. Ihre angepassten Seiten werden unter /apps
und überlagern die Standardseiten (die unter /libs
).
Siehe Verwenden von Überlagerungen für weitere Details.
Kopieren Sie im Repository die Standardskripte:
/libs/sling/servlet/errorhandler/
/apps/sling/servlet/errorhandler/
Da der Zielpfad nicht standardmäßig vorhanden ist, müssen Sie ihn erstellen, wenn Sie dies zum ersten Mal durchführen.
Navigieren Sie zu /apps/sling/servlet/errorhandler
und führen Sie einen der folgenden Schritte aus:
Speichern Sie die Änderungen und testen Sie sie.
Die Handler "404.jsp"und "403.jsp"wurden für die CQ5-Authentifizierung entwickelt, um insbesondere eine Systemanmeldung zu ermöglichen, wenn diese Fehler auftreten.
Daher sollten diese beiden Handler mit großer Sorgfalt ersetzt werden.
HTTP 500-Fehler werden durch serverseitige Ausnahmen verursacht.
Wenn die Bearbeitung einer Anfrage zu einem Ausnahmefehler führt, führt das Apache Sling-Framework (auf dem AEM basiert) folgende Schritte durch:
protokolliert die Ausnahme
gibt zurück:
im Hauptteil der Antwort.
Indem Sie die Seiten anpassen, die der Fehler-Handler zeigt, können Sie ein 500.jsp
-Skript erstellen. Sie wird jedoch nur verwendet, wenn HttpServletResponse.sendError(500)
explizit ausgeführt wird, d. h. von einem Ausnahmefänger.
Andernfalls wird der Antwort-Code auf „500“ gesetzt, aber das 500.jsp
-Skript wird nicht ausgeführt.
Um 500-Fehler zu verarbeiten, muss der Dateiname des Fehler-Handler-Skripts identisch mit der Ausnahmeklasse (oder der übergeordneten Klasse) sein. Um alle diese Ausnahmen zu handhaben, können Sie ein Skript erstellen /apps/sling/servlet/errorhandler/Throwable.js
p oder /apps/sling/servlet/errorhandler/Exception.jsp
.
Auf einer Autoreninstanz muss die CQ WCM Debug Filter ist standardmäßig aktiviert. Das Ergebnis ist immer der Antwort-Code 200. Der standardmäßige Fehler-Handler antwortet, indem er den vollständigen Stacktrace in die Antwort schreibt.
Für einen benutzerdefinierten Fehler-Handler sind Antworten mit Code 500 erforderlich, sodass die Variable CQ WCM Debug Filter muss deaktiviert sein. Dadurch wird sichergestellt, dass der Antwort-Code 500 zurückgegeben wird, was wiederum den richtigen Sling-Fehler-Handler auslöst.
Auf einer Veröffentlichungsinstanz lautet der CQ WCM Debug Filter always deaktiviert (auch wenn als aktiviert konfiguriert).