Dans AEM, Externalizer est un service OSGi qui vous permet de transformer, par programmation, un chemin d’accès aux ressources (/path/to/my/page
) 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é.
Étant donné qu’AEM as a Cloud Service ne peut pas connaître son URL visible en externe et qu’il est parfois nécessaire de créer un lien hors de portée 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 plus de détails techniques sur le service, reportez-vous aux Javadocs.
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 as a Cloud Service et définition des variables AEM_CDN_DOMAIN_AUTHOR
et AEM_CDN_DOMAIN_PUBLISH
prédéfinies.
Le service Externalizer vous permet de définir, de manière centralisée, le domaine pouvant être utilisé pour préfixer des chemins d’accès aux ressources par programmation. Le service Externalizer ne doit être utilisé que pour les applications à domaine unique.
Comme pour l’application de toutes les configurations OSGi pour AEM as a Cloud Service, les étapes suivantes doivent être exécutées sur une instance 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 :
Accédez au gestionnaire de configuration via :
https://<host>:<port>/system/console/configMgr
Cliquez sur Day CQ Link Externalizer pour ouvrir la boîte de dialogue de configuration.
Le lien direct vers la configuration est https://<host>:<port>/system/console/configMgr/com.day.cq.commons.impl.ExternalizerImpl
Définissez un mappage 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ù :
scheme
est généralement http ou https, mais peut être un autre protocole.
server
est le nom d’hôte (un nom de domaine ou 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 toujours être configurés, car AEM en dépend :
local
: instance localeauthor
: DNS du système de créationpublish
: DNS du site publicUne 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 de base d’un projet.
Cliquez sur Enregistrer pour enregistrer vos modifications.
Cette section illustre quelques exemples d’utilisation du service Externalizer.
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 prenant 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 prenant 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 prenant le mappage de domaine :
local https://publish-3.internal
myExternalizedUrl
se termine par la valeur :
https://publish-3.internal/contextpath/my/page.html
Vous trouverez d’autres exemples dans les Javadocs.