I JSP non si ricompilano dopo l'installazione di un pacchetto di codice

I JSP non si ricompilano sempre dopo l'installazione di un pacchetto di codice

Quando installi un pacchetto CQ5 contenente una nuova versione del codice /apps (con file .jsp o .java), non tutto il codice JSP viene ricompilato dopo aver installato il pacchetto.

Soluzione

Per risolvere questo problema per una singola installazione, procedi come segue:

  1. Accedi a http://<host>:<port>/crx come amministratore (dove<host> è il nome host o l'indirizzo IP del tuo server CQ5 e <port> è il numero di porta).
  2. Apri lo strumento CRX Explorer.
  3. Elimina i nodi sotto /var/classes/org/apache/jsp/apps/.

Per risolvere questo problema in modo che ogni volta che installi il pacchetto il JSP venga ricompilato, modifica il pacchetto come segue:

  1. Aggiungi due regole di filtro all'inizio del filtro.xml (in META-INF/vault/filter.xml).
    <workspaceFilter version="1.0"> <filter root="/var/classes/org/apache/jsp/apps" /> <filter root="/var/classes/apps" /> ...
    
  2. Poi includi nel tuo pacchetto zip due cartelle vuote /var/classes/org/apache/jsp/apps e /var/classes/apps. In questo modo, quando installi il pacchetto, tutti i file class sotto questi percorsi vengono cancellati. Di conseguenza, ciò fa sì che tutte le applicazioni JSP e i file Java nella directory /apps del pacchetto vengano ricompilati da Apache Sling.

Si applica a

CQ5.2, CQ5.3 senza hot fix 30517
.

Informazioni aggiuntive

Questo problema è dovuto al modo in cui Apache Sling valuta se compilare un dato file JSP o Java.

La data jcr:lastModified dello script viene confrontata con la data del file class esistente jcr:lastModified.

Se l'ultima data di modifica dello script è più recente di quella del file class, allora viene ricompilato. Altrimenti, non viene ricompilato.

Quando comprimi un pacchetto zip contenente file jsp, allora alcuni JSP potrebbero avere marche temporali più vecchie dei file class sotto /var/classes.

Nota:

Non utilizzare questa soluzione con CQ5.4. Se hai questo problema in CQ5.4, presenta un biglietto e una richiesta di supporto.

Nota:

AEM6 ha un plug-in per console Web per cancellare i file class compilati, indipendentemente da dove e come sono memorizzati, che possono essere utilizzati durante l'implementazione del codice http://<host>:<port>/system/console/slingjsp.

Logo Adobe

Accedi al tuo account