Externalización de direcciones URL externalizing-urls
En AEM, la variable 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
) añadiendo un prefijo a la ruta con un DNS preconfigurado.
Dado que una instancia no puede conocer su URL visible externamente si se está ejecutando detrás de una capa web y porque a veces se debe crear un vínculo fuera del ámbito de la solicitud, este servicio proporciona un lugar central para configurar esas URL externas y crearlas.
Esta página explica cómo configurar la variable Externalizador y cómo utilizarlo. Para obtener más información, consulte la Javadocs.
Configuración del servicio externalizador configuring-the-externalizer-service
La variable Externalizador permite definir de forma centralizada varios dominios que se pueden utilizar para prefijar 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 la variable Externalizador servicio:
-
Vaya al administrador de configuración a través de Herramientas, luego Consola web o introduzca
https://<host>:<port>/system/console/configMgr.
-
Haga clic en Externalizador de vínculos de CQ de día para abrir el cuadro de diálogo de configuración.
note note NOTE El vínculo directo a la configuración es https://<host>:<port>/system/console/configMgr/com.day.cq.commons.impl.ExternalizerImpl
-
Defina una asignación de dominio: 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:- esquema generalmente es http o https, pero también puede ser ftp, etc.; utilice https para aplicar los 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 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 deben configurarse como AEM dependen de ellos:
- local : la instancia local
- author - el DNS del sistema de creación
- publicar - el sitio web DNS de cara al público
note note NOTE Una configuración personalizada le permite agregar una nueva categoría, como "producción", "ensayo" o incluso sistemas externos que no sean AEM, como "my-internal-webservice", y resulta útil para evitar codificar dichas direcciones URL en diferentes lugares de la base de código de un proyecto. -
Haga clic en Guardar para guardar los cambios.
Uso del servicio externalizador using-the-externalizer-service
Esta sección muestra algunos ejemplos de cómo se usa la variable Externalizador se puede utilizar.
Para obtener el servicio externalizador en un JSP:
Externalizer externalizer = resourceResolver.adaptTo(Externalizer.class);
Para externalizar una ruta con el dominio "publicar":
String myExternalizedUrl = externalizer.publishLink(resolver, "/my/page") + ".html";
Asumiendo la asignación de dominios " publish https://www.website.com
", myExternalizedUrl termina con el valor " https://www.website.com/contextpath/my/page.html
".
Para externalizar una ruta con el dominio "autor":
String myExternalizedUrl = externalizer.authorLink(resolver, "/my/page") + ".html";
Asumiendo la asignación de dominios " author https://author.website.com
", myExternalizedUrl termina con el valor " https://author.website.com/contextpath/my/page.html
".
Para externalizar una ruta con el dominio "local":
String myExternalizedUrl = externalizer.externalLink(resolver, Externalizer.LOCAL, "/my/page") + ".html";
Asumiendo la asignación de dominios " local https://publish-3.internal
", myExternalizedUrl termina con el valor " https://publish-3.internal/contextpath/my/page.html
".
Puede encontrar más ejemplos en la sección Javadocs.