Externalisation d’URL

Dans AEM, Externalizer est un service OSGI qui vous permet de transformer par programmation un chemin d’accès à une 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é.

Comme une instance ne peut pas connaître son URL visible en externe si elle s’exécute derrière une couche web, et qu’il arrive qu’un lien doive être créé en dehors de la portée de la requête, ce service fournit un emplacement central pour configurer ces URL externes et les créer.

Cette page explique comment configurer le service Externalizer et l’utiliser. Pour plus d’informations, reportez-vous aux JavaDocs.

Configuration du service Externalizer

Le service Externalizer vous permet de définir de manière centralisée plusieurs domaines qui peuvent être utilisés pour préfixer par programmation les chemins d’accès aux ressources. Chaque domaine est identifié par un nom unique utilisé pour faire référence au 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 Day CQ Link Externalizer 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éfinissez un mappage Domains : 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ù :

    • Les schémas sont généralement http ou https, mais peuvent également être ftp, etc.

      • utilisez https pour appliquer des liens https, le cas échéant.
      • 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 (il peut s’agir d’un nom de domaine ou d’une adresse ip).

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

    • contextpath (facultatif) n’est défini que si AEM est installé en tant qu’application web sous un autre chemin de 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.

REMARQUE

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 supposant 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 supposant 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 supposant 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