Externalisation d’URL

Dans AEM, Externalizer est un service OSGi qui vous permet de transformer par programmation un chemin de ressource (par exemple, /path/to/my/page) dans une URL externe et absolue (par exemple, https://www.mycompany.com/path/to/my/page) en ajoutant un préfixe au chemin d’accès avec un DNS préconfiguré.

Étant donné qu’une AEM en tant qu’instance de Cloud Service ne peut pas connaître son URL visible en externe et qu’il est parfois nécessaire de créer un lien en dehors du périmètre de la requête, ce service fournit un emplacement central pour configurer ces URL externes et les créer.

Cet article explique comment configurer le service Externalizer et comment l’utiliser. Pour obtenir des détails techniques sur le service, reportez-vous aux Javadocs.

Comportement par défaut de l’externaliseur et comment remplacer

Par défaut, le service Externalizer contient des valeurs telles que author-p12345-e6789.adobeaemcloud.com et publish-p12345-e6789.adobeaemcloud.com.

Pour remplacer ces valeurs, utilisez les variables d’environnement Cloud Manager comme décrit dans l’article Configuration d’OSGi pour AEM en tant que Cloud Service et définition des variables AEM_CDN_DOMAIN_AUTHOR prédéfinies et AEM_CDN_DOMAIN_PUBLISH prédéfinies.

Configuration du service Externalizer

Le service Externalizer vous permet de définir de manière centralisée le domaine qui peut être utilisé pour préfixer par programmation les chemins d’accès aux ressources. Le service Externalizer ne doit être utilisé que pour les applications d’un seul domaine.

REMARQUE

Comme lors de l’application de toutes les configurations OSGi pour AEM en tant que Cloud Service, les étapes suivantes doivent être exécutées sur une instance de développeur locale, puis validées dans le code de votre projet pour le déploiement.

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

  1. Accédez à Configuration Manager via :

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

  2. Cliquez sur Day CQ Link Externalizer pour ouvrir la boîte de dialogue de configuration.

    Configuration OSGi de l’externaliseur

    REMARQUE

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

  3. Définissez un mappage Domaines. Un mappage se compose d’un nom unique qui peut être utilisé dans le code pour référencer le domaine, un espace et le domaine :

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

    Où :

    • scheme est généralement http ou https, mais peut être un autre protocole.

      • Il est recommandé d’utiliser https pour appliquer les liens https.
      • Il sera 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 (nom de domaine ou 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 toujours être définis car AEM s’y appuie :

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

    Une configuration personnalisée vous permet d’ajouter une nouvelle 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 base d’un projet.

  4. Cliquez sur Enregistrer pour enregistrer vos modifications.

Utilisation du service Externalizer

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

REMARQUE

Aucun lien absolu ne doit être créé dans le contexte du code HTML. Par conséquent, cet utilitaire ne doit pas être utilisé dans de tels cas.

  • Pour externaliser un chemin d’accès avec le domaine « publish » :

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

    En supposant le mappage de domaine :

    • publish https://www.website.com

    • myExternalizedUrl se termine par la valeur :

    • https://www.website.com/contextpath/my/page.html

  • Pour externaliser un chemin d’accès avec le domaine « author » :

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

    En supposant le mappage de domaine :

    • author https://author.website.com

    • myExternalizedUrl se termine par la valeur :

    • https://author.website.com/contextpath/my/page.html

  • 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 supposant le mappage de domaine :

    • local https://publish-3.internal

    • myExternalizedUrl se termine par la valeur :

    • https://publish-3.internal/contextpath/my/page.html

CONSEIL

Vous trouverez d’autres exemples dans les Javadocs.

Sur cette page