Externalisation d’URL

Dernière mise à jour : 2023-12-19

Dans Adobe Experience Manager (AEM), Externalizer est un service OSGi qui vous permet de transformer, par programmation, un chemin d’accès aux ressources (/path/to/my/page, par exemple) en une URL externe et absolue (https://www.mycompany.com/path/to/my/page, par exemple) en faisant précéder le chemin d’accès d’un DNS préconfiguré.

Une instance ne peut pas connaître son URL visible en externe si elle s’exécute derrière une couche Web et il arrive qu’un lien doive être créé en dehors d’une étendue de demande. Dès lors, ce service fournit un emplacement centralisé pour configurer ces URL externes et les générer.

Cete page explique comment configurer le service Externalizer et comment l’utiliser. Pour plus d’informations, voir Javadocs.

Configurer le service Externalizer

Le service Externalizer vous permet de définir, de manière centralisée, plusieurs domaines pouvant être utilisés pour préfixer des chemins d’accès aux ressources par programmation. Chaque domaine est identifié par un nom unique utilisé pour référencer le domaine par programmation.

Pour définir un mappage de domaine pour le service Externalizer, procédez comme suit :

  1. Accédez au gestionnaire de configuration via Outils, puis Console Web, ou saisissez :

    https://<host>:<port>/system/console/configMgr

  2. Cliquez sur l’Externaliseur de lien Day CQ pour ouvrir la boîte de dialogue de configuration.

    REMARQUE

    Le lien direct vers la configuration est https://<host>:<port>/system/console/configMgr/com.day.cq.commons.impl.ExternalizerImpl.

    aem-externalizer-01

  3. Définit un mappage de domaines : un mappage correspond à un nom unique (qui peut être utilisé dans le code pour référencer le domaine) d’un espace et du domaine :

    <unique-name> [scheme://]server[:port][/contextpath]

    Où :

    • Le schéma est http ou https, mais peut également être ftp, etc.

      • Utilisez https pour appliquer des liens https, le cas échéant.
      • Il est utilisé si le code client ne remplace pas le schéma lors de la demande d’externalisation d’une URL.
    • Server est le nom d’hôte (il peut s’agir d’un nom de domaine ou d’une adresse IP).

    • Port (facultatif) est le numéro de port.

    • contextpath (facultatif) est défini uniquement si AEM est installé en tant qu’application Web sous un autre chemin d’accès au contexte.

    Par exemple : production https://my.production.instance

    Les noms de mappage suivants sont prédéfinis et doivent être configurés, car AEM en dépend :

    • local : instance locale
    • author : DNS du système de création
    • publish : DNS du site public
    REMARQUE

    Une configuration personnalisée vous permet d’ajouter une catégorie, telle que production, staging ou même des systèmes externes non AEM tels que my-internal-webservice. Il est utile d’éviter de coder en dur de telles URL à différents endroits dans le code de base d’un projet.

  4. Cliquez sur Enregistrer pour enregistrer vos modifications.

REMARQUE

Adobe vous recommande d’ajouter la configuration au référentiel.

Utilisation du service Externalizer

Cette section illustre quelques exemples d’utilisation du service Externalizer :

  1. Pour obtenir le service Externalizer dans un JSP :

    Externalizer externalizer = resourceResolver.adaptTo(Externalizer.class);
    
  2. Pour externaliser un chemin d’accès avec le domaine « publish » :

    String myExternalizedUrl = externalizer.publishLink(resolver, "/my/page") + ".html";
    

    En prenant le mappage de domaine :

    • publish https://www.website.com

    myExternalizedUrl se termine par la valeur :

    • https://www.website.com/contextpath/my/page.html
  3. Pour externaliser un chemin d’accès avec le domaine « author » :

    String myExternalizedUrl = externalizer.authorLink(resolver, "/my/page") + ".html";
    

    En prenant le mappage de domaine :

    • author https://author.website.com

    myExternalizedUrl se termine par la valeur :

    • https://author.website.com/contextpath/my/page.html
  4. Pour externaliser un chemin d’accès avec le domaine « local », procédez comme suit :

    String myExternalizedUrl = externalizer.externalLink(resolver, Externalizer.LOCAL, "/my/page") + ".html";
    

    En prenant le mappage de domaine :

    • local https://publish-3.internal

    myExternalizedUrl se termine par la valeur :

    • https://publish-3.internal/contextpath/my/page.html
  5. Vous trouverez d’autres exemples dans les Javadocs.

Sur cette page