In AEM, il Externalizer è un servizio OSGI che consente di trasformare programmaticamente un percorso di risorse (ad es. /path/to/my/page
) in un URL esterno e assoluto (ad esempio, https://www.mycompany.com/path/to/my/page
), anteponendo il percorso a un DNS preconfigurato.
Poiché un’istanza non è in grado di conoscere il relativo URL visibile esternamente se è in esecuzione dietro un livello Web e poiché a volte è necessario creare un collegamento all’esterno dell’ambito della richiesta, il servizio fornisce una posizione centrale per configurare tali URL esterni e crearli.
In questa pagina viene illustrato come configurare il servizio Externalizer e come utilizzarlo. Per ulteriori dettagli, fare riferimento al Javadocs.
Il servizio Externalizer consente di definire a livello centrale più domini che possono essere utilizzati per il prefisso programmatico dei percorsi delle risorse. Ogni dominio è identificato da un nome univoco utilizzato per fare riferimento al dominio a livello di programmazione.
Per definire un mapping di dominio per il servizio Externalizer:
Andate alla gestione della configurazione tramite Strumenti, quindi Console Web oppure immettete:
https://<host>:<port>/system/console/configMgr
Fare clic su Day CQ Link Externalizer per aprire la finestra di dialogo di configurazione.
Il collegamento diretto alla configurazione è https://<host>:<port>/system/console/configMgr/com.day.cq.commons.impl.ExternalizerImpl
Definire una mappatura Domains: un mapping è costituito 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:
Gli schemi sono in genere http o https, ma possono anche essere ftp, ecc.
Il server è il nome host (può essere 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 contestuale diverso.
Esempio: production https://my.production.instance
I seguenti nomi di mappatura sono predefiniti e devono sempre essere impostati come AEM dipende da essi:
local
- l'istanza localeauthor
- DNS del sistema di authoringpublish
- DNS sito Web pubblicoUna 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 diverse aree della base di codice di un progetto.
Fare clic su Salva per salvare le modifiche.
Adobe consiglia di aggiungere la configurazione al repository.
In questa sezione sono riportati alcuni esempi di utilizzo del servizio Externalizer:
Per ottenere il servizio Externalizer in un JSP:
Externalizer externalizer = resourceResolver.adaptTo(Externalizer.class);
Per esternalizzare un percorso con il dominio 'pubblica':
String myExternalizedUrl = externalizer.publishLink(resolver, "/my/page") + ".html";
Presupponendo la mappatura del dominio:
publish https://www.website.com
myExternalizedUrl
termina 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";
Presupponendo la mappatura del dominio:
author https://author.website.com
myExternalizedUrl
termina 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";
Presupponendo la mappatura del dominio:
local https://publish-3.internal
myExternalizedUrl
termina con il valore:
https://publish-3.internal/contextpath/my/page.html
Per ulteriori esempi, vedere Javadocs.