Nell'AEM, la Esternalizzatore è un servizio OSGi che consente di trasformare in modo programmatico un percorso di risorsa (ad esempio, /path/to/my/page
) in un URL esterno e assoluto (ad esempio, https://www.mycompany.com/path/to/my/page
) inserendo un prefisso DNS nel percorso.
Poiché un’istanza as a Cloud Service dell’AEM non può conoscere il proprio URL visibile esternamente e poiché a volte è necessario creare un collegamento al di fuori dell’ambito della richiesta, questo servizio fornisce una posizione centrale per configurare tali URL esterni e generarli.
Questo articolo spiega come configurare il servizio Externalizer e come utilizzarlo. Per informazioni tecniche dettagliate sul servizio, consultare il JavaScript.
Il servizio Externalizer associa una serie di identificatori di dominio a prefissi URL assoluti che corrispondono agli URL del servizio AEM generati per l’ambiente, ad esempio author https://author-p12345-e6789.adobeaemcloud.com
e publish https://publish-p12345-e6789.adobeaemcloud.com
. Gli URL di base per ciascuno di questi domini predefiniti vengono letti dalle variabili di ambiente definite da Cloud Manager.
Per riferimento, la configurazione OSGi predefinita per com.day.cq.commons.impl.ExternalizerImpl.cfg.json
è effettivamente:
{
"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]"
]
}
Il valore predefinito local
, author
, preview
, e publish
Le mappature del dominio esternalizzatore nella configurazione OSGi devono essere mantenute con l’originale $[env:...]
i valori elencati sopra.
Distribuzione di un com.day.cq.commons.impl.ExternalizerImpl.cfg.json
su AEM as a Cloud Service che omette una qualsiasi di queste mappature di dominio predefinite può causare un comportamento imprevedibile dell’applicazione.
Per ignorare preview
e publish
, utilizza le variabili di ambiente di Cloud Manager come descritto nell’articolo Configurazione di OSGi per AEM as a Cloud Service e l'impostazione della AEM_CDN_DOMAIN_PUBLISH
e AEM_CDN_DOMAIN_PREVIEW
variabili.
Il servizio Externalizer ti consente di definire a livello centrale il dominio da utilizzare per prefissare in modo programmatico i percorsi delle risorse. Il servizio Externalizer deve essere utilizzato solo per le applicazioni con un singolo dominio.
Come quando si applica Configurazioni OSGi per AEM as a Cloud Service i seguenti passaggi devono essere eseguiti in un’istanza sviluppatore locale e quindi eseguiti nel codice del progetto per la distribuzione.
Per definire un mapping di dominio per il servizio Externalizer:
Passa a Configuration Manager tramite:
https://<host>:<port>/system/console/configMgr
Clic Day CQ Link Externalizer per aprire la finestra di dialogo configurazione.
Il collegamento diretto alla configurazione è https://<host>:<port>/system/console/configMgr/com.day.cq.commons.impl.ExternalizerImpl
Definisci un Domini mappatura. Una mappatura è costituita da un nome univoco che può essere utilizzato nel codice per fare riferimento al dominio, a uno spazio e al dominio:
<unique-name> [scheme://]server[:port][/contextpath]
Dove:
scheme
è solitamente http o https, ma può essere un altro protocollo.
server
è il nome host (un nome di dominio o un indirizzo ip).
port
(facoltativo) è il numero della porta.
contextpath
(facoltativo) è impostato solo se AEM è installato come app web in un percorso di contesto diverso.
Esempio: production https://my.production.instance
I seguenti nomi di mappatura sono predefiniti e devono sempre essere impostati in quanto AEM si basa su di essi:
local
: l’istanza localeauthor
- DNS del sistema di authoringpublish
- il sito web pubblico DNSUna configurazione personalizzata consente di aggiungere una nuova categoria, ad esempio production
, staging
o anche sistemi esterni non AEM come my-internal-webservice
. È utile evitare di codificare tali URL in posizioni diverse nella base di codice di un progetto.
Clic Salva per salvare le modifiche.
Questa sezione mostra alcuni esempi di utilizzo del servizio Externalizer.
Non è necessario creare collegamenti assoluti nel contesto di HTML. Pertanto questa utilità non deve essere utilizzata in tali casi.
Per esternalizzare un percorso con il dominio "publish":
String myExternalizedUrl = externalizer.publishLink(resolver, "/my/page") + ".html";
Supponendo il mapping del dominio:
publish https://www.website.com
myExternalizedUrl
finisce con il valore:
https://www.website.com/contextpath/my/page.html
Per esternalizzare un percorso con il dominio "author":
String myExternalizedUrl = externalizer.authorLink(resolver, "/my/page") + ".html";
Supponendo il mapping del dominio:
author https://author.website.com
myExternalizedUrl
finisce con il valore:
https://author.website.com/contextpath/my/page.html
Per esternalizzare un percorso con il dominio "locale":
String myExternalizedUrl = externalizer.externalLink(resolver, Externalizer.LOCAL, "/my/page") + ".html";
Supponendo il mapping del dominio:
local https://publish-3.internal
myExternalizedUrl
finisce con il valore:
https://publish-3.internal/contextpath/my/page.html
Puoi trovare altri esempi nella sezione JavaScript.