TagManager.resolve retorna nulo no AEM as a Cloud Service Publisher
No ambiente do AEM as a Cloud Service Publisher, as chamadas para TagManager.resolve retornam nulo, mas a mesma lógica funciona corretamente no AEM 6.5 ou no ambiente do Autor. O sistema usa como padrão /etc/tags para resolução de marcas em vez do caminho padrão do AEMaaCS: /content/cq:tags. Para corrigir isso, atualize a configuração do OSGi para desabilitar o suporte herdado e remover o nó /etc/tags dos ambientes do Autor e do Editor.
Descrição description
Ambiente
Adobe Experience Manager (AEM) as a Cloud Service - Sites
Problema/Sintomas
-
O código do servlet usa:
code language-none TagManager tagManager = request.getResourceResolver().adaptTo(TagManager.class); Tag tag = tagManager.resolve("/content/cq:tags/...");O TagManager é resolvido como nulo somente no Editor, não no Autor.
-
O arquivo de log mostra:
com.day.cq.tagging.impl.JcrTagManagerFactoryImpl Using /etc/tags as root path for tagsIsso indica que o sistema está padronizando como
/etc/tags. -
As marcas existem em
/etc/tagsno Editor, enquanto/content/cq:tagsestá configurado corretamente no Editor.
Causa raiz
A presença de tags em /etc/tags no Publicador faz com que o AEM use o caminho /etc/tags herdado como padrão.
Resolução resolution
Para resolver o problema:
-
Defina a propriedade de configuração OSGi
legacySupport.enabled.namecomo false para o serviçocom.day.cq.tagging.impl.JcrTagManagerFactoryImpl(Serviço de Marcação CQ de Dias). Isso garante que o AEM use/content/cq:tagscomo o caminho raiz. -
Verifique se o nó
/etc/tagsestá ausente ou vazio nos ambientes do Autor e do Publicador. -
Para limpar o Editor:
- Crie um pacote de conteúdo em branco que inclua
/etc/tags, mas sem nós filhos. - Instale o pacote no Author e replique-o no Publisher. Isso removerá
/etc/tagsde ambos os ambientes.
- Crie um pacote de conteúdo em branco que inclua
-
Como alternativa, exclua o nó
/etc/tagsdiretamente do Editor, enviando uma solicitação de ação Excluir da interface de Distribuição de Autores.
Como resultado:
- Os logs do AEM devem mostrar:
com.day.cq.tagging.impl.JcrTagManagerFactoryImpl Using /content/cq:tags as root path for tags TagManager.resolveusará as marcas corretamente em/content/cq:tags.