AEM Externalizer är en OSGi-tjänst som gör att du kan omvandla en resurssökväg med programkod (till exempel /path/to/my/page
) till en extern och absolut URL (till exempel https://www.mycompany.com/path/to/my/page
) genom att ange sökvägen som prefix med en förkonfigurerad DNS.
Eftersom en AEM as a Cloud Service instans inte kan känna till sin externt synliga URL och eftersom en länk ibland måste skapas utanför det begärda omfånget, tillhandahåller den här tjänsten en central plats för att konfigurera dessa externa URL:er och skapa dem.
I den här artikeln beskrivs hur du konfigurerar tjänsten Externalizer och hur du använder den. Tekniska detaljer om tjänsten finns i Javadocs.
Externalizer-tjänsten kopplar en handfull domänidentifierare till absoluta URL-prefix som matchar AEM URL:er som har skapats för miljön, till exempel author https://author-p12345-e6789.adobeaemcloud.com
och publish https://publish-p12345-e6789.adobeaemcloud.com
. Bas-URL:erna för var och en av dessa standarddomäner läses från miljövariabler som definieras av Cloud Manager.
Som referens gäller OSGi-standardkonfigurationen för com.day.cq.commons.impl.ExternalizerImpl.cfg.json
är effektivt:
{
"externalizer.domains": [
"local $[env:AEM_EXTERNALIZER_LOCAL;default=http://localhost:4502]",
"author $[env:AEM_EXTERNALIZER_AUTHOR;default=http://localhost:4502]",
"publish $[env:AEM_EXTERNALIZER_PUBLISH;default=http://localhost:4503]",
"preview $[env:AEM_EXTERNALIZER_PREVIEW;default=http://localhost:4503]"
]
}
Standardvärdet local
, author
, preview
och publish
Domänmappningar för externalisering i OSGi-konfigurationen måste bevaras med originalet $[env:...]
värden som anges ovan.
Distribuera en anpassad com.day.cq.commons.impl.ExternalizerImpl.cfg.json
en fil som AEM as a Cloud Service och som utelämnar någon av dessa körklara domänmappningar kan leda till oförutsägbara programbeteenden.
Åsidosätta preview
och publish
värden, använd Cloud Manager-miljövariabler enligt beskrivningen i artikeln Konfigurera OSGi för AEM as a Cloud Service och ange fördefinierade AEM_CDN_DOMAIN_PUBLISH
och AEM_CDN_DOMAIN_PREVIEW
variabler.
Med tjänsten Externalizer kan du centralt definiera den domän som kan användas för att programmässigt prefix för resurssökvägar. Externalizer-tjänsten bör endast användas för program med en enda domän.
Som när du använder OSGi-konfigurationer för AEM as a Cloud Service, följande steg ska utföras på en lokal utvecklarinstans och sedan implementeras i projektkoden för distribution.
Så här definierar du en domänmappning för tjänsten Externalizer:
Navigera till Configuration Manager via:
https://<host>:<port>/system/console/configMgr
Klicka Day CQ Link Externalizer för att öppna konfigurationsdialogrutan.
Den direkta länken till konfigurationen är https://<host>:<port>/system/console/configMgr/com.day.cq.commons.impl.ExternalizerImpl
Definiera en Domäner mappning. En mappning består av ett unikt namn som kan användas i koden för att referera till domänen, ett blanksteg och domänen:
<unique-name> [scheme://]server[:port][/contextpath]
Var:
scheme
är vanligtvis http eller https, men kan vara ett annat protokoll.
server
är värdnamnet (antingen ett domännamn eller en IP-adress).
port
(valfritt) är portnumret.
contextpath
(valfritt) anges bara om AEM har installerats som ett webbprogram under en annan kontextsökväg.
Till exempel: production https://my.production.instance
Följande mappningsnamn är fördefinierade och måste alltid anges som AEM är beroende av dem:
local
- den lokala instansenauthor
- redigeringssystemets DNSpublish
- den offentliga webbplatsens DNSMed en anpassad konfiguration kan du lägga till en ny kategori, till exempel production
, staging
eller till och med externa icke-AEM system som my-internal-webservice
. Det är användbart att undvika hårdkodning av sådana URL:er på olika platser i ett projekts kodbas.
Klicka Spara för att spara ändringarna.
I det här avsnittet visas några exempel på hur Externalizer-tjänsten kan användas.
Inga absoluta länkar bör skapas i HTML. Denna funktion bör därför inte användas i sådana fall.
Så här gör du en extern sökväg med domänen 'publish':
String myExternalizedUrl = externalizer.publishLink(resolver, "/my/page") + ".html";
Anta domänmappningen:
publish https://www.website.com
myExternalizedUrl
slutar med värdet:
https://www.website.com/contextpath/my/page.html
Så här gör du en extern sökväg med domänen 'författare':
String myExternalizedUrl = externalizer.authorLink(resolver, "/my/page") + ".html";
Anta domänmappningen:
author https://author.website.com
myExternalizedUrl
slutar med värdet:
https://author.website.com/contextpath/my/page.html
Så här externaliserar du en sökväg med domänen"local":
String myExternalizedUrl = externalizer.externalLink(resolver, Externalizer.LOCAL, "/my/page") + ".html";
Anta domänmappningen:
local https://publish-3.internal
myExternalizedUrl
slutar med värdet:
https://publish-3.internal/contextpath/my/page.html
Du hittar fler exempel i Javadocs.