Show Menu
TEMAS×

Externalización de direcciones URL

En AEM, el Externalizador es un servicio OSGI que le permite transformar mediante programación una ruta de recursos (p. ej. /path/to/my/page ) en una dirección URL externa y absoluta (por ejemplo, https://www.mycompany.com/path/to/my/page ) mediante el prefijo de la ruta con un DNS preconfigurado.
Debido a que una instancia no puede conocer su URL visible externamente si se está ejecutando detrás de una capa web y, a veces, es necesario crear un vínculo fuera del ámbito de la solicitud, este servicio proporciona un lugar central para configurar dichas URL externas y generarlas.
En esta página se explica cómo configurar el servicio Externalizer y cómo utilizarlo. Para más detalles, por favor diríjase al Javadocs .

Configuración del servicio Externalizer

El servicio Externalizer permite definir centralmente varios dominios que se pueden utilizar para anteponer programáticamente las rutas de recursos. Cada dominio se identifica con un nombre único que se utiliza para hacer referencia al dominio mediante programación.
Para definir una asignación de dominio para el servicio Externalizer :
  1. Vaya al administrador de configuración a través de Herramientas y, a continuación, Consola ​Web, o introduzca:
    https://<host>:<port>/system/console/configMgr
  2. Haga clic en Day CQ Link Externalizer para abrir el cuadro de diálogo de configuración.
    El vínculo directo a la configuración es https://<host>:<port>/system/console/configMgr/com.day.cq.commons.impl.ExternalizerImpl
  3. Definir una asignación de dominios : una asignación consiste en un nombre único que puede utilizarse en el código para hacer referencia al dominio, un espacio y el dominio:
    <unique-name> [scheme://]server[:port][/contextpath]
    Donde:
    • el esquema suele ser http o https, pero también puede ser ftp, etc.
      • utilice https para aplicar vínculos https si lo desea
      • se utilizará si el código de cliente no anula el esquema al solicitar la externalización de una dirección URL.
    • server es el nombre de host (puede ser un nombre de dominio o una dirección IP).
    • puerto (opcional) es el número de puerto.
    • contextpath (opcional) solo se establece si AEM está instalado como una aplicación web en una ruta de contexto diferente.
    Por ejemplo: production https://my.production.instance
    Los siguientes nombres de asignación están predefinidos y siempre se deben configurar como AEM depende de ellos:
    • local - la instancia local
    • author - el DNS del sistema de creación
    • publish - el DNS del sitio web de cara pública
    Una configuración personalizada le permite agregar una nueva categoría, como production o incluso sistemas externos que no sean de AEM, como staging my-internal-webservice . Resulta útil evitar codificar dichas direcciones URL en diferentes lugares del código base de un proyecto.
  4. Click Save to save your changes.

Uso del servicio Externalizer

Esta sección muestra algunos ejemplos de cómo se puede utilizar el servicio Externalizer :
  1. Para obtener el servicio Externalizador en un JSP:
    Externalizer externalizer = resourceResolver.adaptTo(Externalizer.class);
    
    
  2. Para externalizar una ruta con el dominio de "publicación":
    String myExternalizedUrl = externalizer.publishLink(resolver, "/my/page") + ".html";
    
    
    Supongamos que se asigna el dominio:
    • publish https://www.website.com
    myExternalizedUrl termina con el valor:
    • https://www.website.com/contextpath/my/page.html
  3. Para externalizar una ruta con el dominio de "autor":
    String myExternalizedUrl = externalizer.authorLink(resolver, "/my/page") + ".html";
    
    
    Supongamos que se asigna el dominio:
    • author https://author.website.com
    myExternalizedUrl termina con el valor:
    • https://author.website.com/contextpath/my/page.html
  4. Para externalizar una ruta con el dominio 'local':
    String myExternalizedUrl = externalizer.externalLink(resolver, Externalizer.LOCAL, "/my/page") + ".html";
    
    
    Supongamos que se asigna el dominio:
    • local https://publish-3.internal
    myExternalizedUrl termina con el valor:
    • https://publish-3.internal/contextpath/my/page.html
  5. Puede encontrar más ejemplos en el Javadocs .