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 tags

    Indica che il sistema sta impostando /etc/tags come impostazione predefinita.

  • I tag sono presenti in /etc/tags nel 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:

  1. Impostare la proprietà di configurazione OSGi legacySupport.enabled.name su false per il servizio com.day.cq.tagging.impl.JcrTagManagerFactoryImpl(Day CQ Tagging Service). In questo modo AEM utilizza /content/cq:tags come percorso principale.

  2. Verificare che il nodo /etc/tags sia mancante o vuoto negli ambienti Author e Publisher.

  3. Per ripulire il server di pubblicazione:

    1. Creare un pacchetto di contenuti vuoto che includa /etc/tags ma senza nodi figlio.
    2. Installa il pacchetto in Author e replicalo in Publisher. /etc/tags verrà rimosso da entrambi gli ambienti.
  4. In alternativa, eliminare il nodo /etc/tags direttamente 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.resolve utilizzerà correttamente i tag in /content/cq:tags.
recommendation-more-help
3d58f420-19b5-47a0-a122-5c9dab55ec7f