TagManager.resolve restituisce null in AEM as a Cloud Service Publisher
Nell'ambiente di pubblicazione di AEM as a Cloud Service, le chiamate a TagManager.resolve restituiscono null, ma la stessa logica funziona correttamente in AEM 6.5 o nell'ambiente di creazione. Il valore predefinito del sistema è /etc/tags per la risoluzione dei tag anziché il percorso standard di AEMaaCS: /content/cq:tags. Per risolvere questo problema, aggiorna la configurazione OSGi per disabilitare il supporto legacy e rimuovi il nodo /etc/tags dagli ambienti Author e Publisher.
Descrizione description
Ambiente
Adobe Experience Manager (AEM) as a Cloud Service - Sites
Problema/Sintomi
-
Il codice servlet utilizza:
code language-none TagManager tagManager = request.getResourceResolver().adaptTo(TagManager.class); Tag tag = tagManager.resolve("/content/cq:tags/...");TagManager viene risolto come null solo in Publisher e non in Author.
-
Il file di registro mostra:
com.day.cq.tagging.impl.JcrTagManagerFactoryImpl Using /etc/tags as root path for tagsIndica che il sistema sta impostando
/etc/tagscome impostazione predefinita. -
I tag sono presenti in
/etc/tagsnel server di pubblicazione, mentre/content/cq:tagsè configurato correttamente nel server di creazione.
Causa principale
La presenza di tag in /etc/tags nel server di pubblicazione fa sì che AEM utilizzi il percorso legacy di /etc/tags per impostazione predefinita.
Risoluzione resolution
Per risolvere il problema:
-
Impostare la proprietà di configurazione OSGi
legacySupport.enabled.namesu false per il serviziocom.day.cq.tagging.impl.JcrTagManagerFactoryImpl(Day CQ Tagging Service). In questo modo AEM utilizza/content/cq:tagscome percorso principale. -
Verificare che il nodo
/etc/tagssia mancante o vuoto negli ambienti Author e Publisher. -
Per ripulire il server di pubblicazione:
- Creare un pacchetto di contenuti vuoto che includa
/etc/tagsma senza nodi figlio. - Installa il pacchetto in Author e replicalo in Publisher.
/etc/tagsverrà rimosso da entrambi gli ambienti.
- Creare un pacchetto di contenuti vuoto che includa
-
In alternativa, eliminare il nodo
/etc/tagsdirettamente da Publisher inviando una richiesta di azione Elimina dall'interfaccia utente di distribuzione dell'autore.
Di conseguenza:
- I registri di AEM devono mostrare:
com.day.cq.tagging.impl.JcrTagManagerFactoryImpl Using /content/cq:tags as root path for tags TagManager.resolveutilizzerà correttamente i tag in/content/cq:tags.