JSPs werden nach der Installation eines Codepakets nicht immer erneut kompiliert
Wenn Sie ein CQ5-Paket mit einer neuen Version unseres /apps Codes (mit .jsp oder .java Dateien) installieren, wird nach der Installation des Pakets nicht der ganze JSP-Code erneut kompiliert.
Lösung
Führen Sie folgende Schritte durch, um dieses Problem bei einer einzelnen Installation zu lösen:
- Melden Sie sich bei
http://<host>:<port>/crx
als Administrator an (wobei <host> der Hostname oder die IP-Adresse Ihres CQ5-Servers und <port> die Nummer des Ports ist). - Öffnen Sie das CRX Explorer-Tool.
- Löschen Sie die Knoten unter
/var/classes/org/apache/jsp/apps/.
Um dieses Problem zu beheben, sodass jedes Mal, wenn Sie das Paket installieren das JSP neu kompiliert wird, ändern Sie Ihr Paket wie folgt:
- Fügen Sie am Anfang Ihrer beiden Filterregeln filter.xml hinzu (in META-INF/vault/filter.xml)
<workspaceFilter version="1.0"> <filter root="/var/classes/org/apache/jsp/apps" /> <filter root="/var/classes/apps" /> ...
- Fügen Sie dann zwei leere Ordner
/var/classes/org/apache/jsp/apps
und/var/classes/apps
in Ihrer Paket-Zip-Datei ein. Wenn Sie das Paket nun installieren, werden alle Klassen-Datein unter diesem Pfad gelöscht. Folglich werden alle Ihre JSPs und Java-Dateien der Anwendung im Ordner „/apps“ Ihres Pakets von Apache Sling neu kompiliert.
Gilt für
CQ5.3, CQ5.2 ohne den Hotfix 30517
Weitere Informationen
Dies Problem liegt an der Art und Weise, wie Apache Sling evaluiert, ob eine gegebene JSP- oder Java-Datei kompiliert werden soll.
Das jcr:lastModified-Datum des Skripts wird mit dem Datum der vorhandenen Klassendatei 'sjcr:lastModified verglichen.
Wenn das Datum der letzten Änderung des Skripts jünger als das der Klassendatei ist, wird es neu kompiliert. Andernfalls wird es nicht neu kompiliert.
Wenn Sie eine ZIP-Datei mit JSP-Dateien verpacken, haben einige JSPs möglicherweise ältere Zeitstempel als die Klassendateien unter /var/classes.
Verwenden Sie diese Problemumgehung nicht mit CQ5.4. Wenn Sie dieses Problem in CQ5.4 haben, senden Sie ein Supportticket und eine Anfrage.
AEM6 verfügt über die ein Webkonsolen-Plugin zum Löschen der kompilierten Klassen (unabhängig davon, wo und wie sie gespeichert sind), die während der Codeimplementierung http://<host>:<port>/system/console/slingjsp verwendet werden können.
Bei Ihrem Konto anmelden