JSPs não recompilam após uma instalação do pacote de código

JSPs nem sempre recompilam após uma instalação de pacote de código

Quando você instala um pacote CQ5 contendo uma nova versão do nosso código /apps (com arquivos.jsp ou .Java contidos), nem todo o código JSP é recompilado após a instalação do pacote.

Solução

Para resolver esse problema para uma única instalação, faça o seguinte:

  1. Faça logon em http://<host>:<port>/crx como administrador (onde <host> é o nome do host ou endereço IP do seu servidor CQ5 e <port> é o número da porta).
  2. Abra a ferramenta CRX Explorer.
  3. Exclua os nós em /var/classes/org/apache/jsp/apps/.

Para resolver esse problema de forma que toda vez que você instalar o pacote, o JSP seja recompilado, modifique seu pacote da seguinte maneira:

  1. Adicione duas regras de filtro no início do seu filter.xml (em META-INF/vault/filter.xml)
    <workspaceFilter version="1.0"> <filter root="/var/classes/org/apache/jsp/apps" /> <filter root="/var/classes/apps" /> ...
    
  2. Em seguida, inclua duas pastas vazias /var/classes/org/apache/jsp/apps e /var/classes/apps no seu pacote zip. É assim que, quando você instala o pacote, todos os arquivos de classe nesses caminhos são excluídos. Conseqüentemente, isso faz com que todos os arquivos JSPs e Java de seu aplicativo no diretório /apps do seu pacote sejam recompilados pelo Apache Sling.

Aplica-se a

CQ5.2, CQ5.3 sem hotfix 30517

Informações adicionais

Esse problema se deve à maneira como o Apache Sling avalia se deve compilar um determinado arquivo JSP ou Java.

A data jcr:lastModified do script é comparada com a data do arquivo de classe existente jcr:lastModified.

Se a data da última modificação do script for mais recente que a do arquivo da classe, ela será recompilada. Caso contrário, não será recompilada.

Quando você compacta um arquivo zip contendo arquivos jsp, alguns JSPs podem ter registros de data e hora mais antigos que os arquivos de classe em /var/classes.

Observação:

Não use essa solução alternativa com o CQ5.4. Se você está tendo este problema no CQ5.4, envie um tíquete de suporte e solicitação

Observação:

O AEM6 tem o plug-in do console da web para limpar as classes compiladas, independentemente de onde e como elas são armazenadas, que poderão ser usadas durante a implementação de código http://<host>:<port>/system/console/slingjsp

Logotipo da Adobe

Fazer logon em sua conta