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
) añadiendo un prefijo a 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.
Esta página explica cómo configurar el servicio Externalizer y cómo utilizarlo. Para obtener más información, consulte Javadocs.
El servicio Externalizer le 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:
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 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
Definir 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:
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:
Una configuración personalizada permite agregar una nueva categoría, como "producción", "ensayo" o incluso sistemas externos no AEM como "my-internal-webservice", y resulta útil para evitar codificar dichas direcciones URL en diferentes lugares del código de un proyecto.
Haga clic en Guardar para guardar los cambios.
Adobe recomienda que agregue la configuración al repositorio.
Esta sección muestra algunos ejemplos de cómo se puede utilizar el servicio Externalizer.
Para obtener el servicio Externalizador en un JSP:
Externalizer externalizer = resourceResolver.adaptTo(Externalizer.class);
Para externalizar una ruta con el dominio de "publicación":
String myExternalizedUrl = externalizer.publishLink(resolver, "/my/page") + ".html";
Suponiendo que la asignación de dominio " 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 de "autor":
String myExternalizedUrl = externalizer.authorLink(resolver, "/my/page") + ".html";
Suponiendo que la asignación de dominio " 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";
Suponiendo que la asignación de dominio " local https://publish-3.internal
", myExternalizedUrl termina con el valor " https://publish-3.internal/contextpath/my/page.html
".
Puede encontrar más ejemplos en Javadocs.