AEM En el caso de los Externalizador es un servicio OSGi que permite transformar mediante programación una ruta de recursos (por ejemplo, /path/to/my/page
) en una dirección URL externa y absoluta (por ejemplo, https://www.mycompany.com/path/to/my/page
) prefijando la ruta con un DNS preconfigurado.
AEM Debido a que una instancia as a Cloud Service de la aplicación no puede conocer su dirección URL visible externamente y a que a veces se debe crear un vínculo fuera del ámbito de la solicitud, este servicio proporciona un lugar central para configurar esas direcciones URL externas y crearlas.
Este artículo explica cómo configurar el servicio Externalizer y cómo utilizarlo. Para obtener detalles técnicos del servicio, consulte Javadocs.
AEM De forma predeterminada, el servicio externalizador asigna un puñado de identificadores de dominio a prefijos de URL absolutos que coinciden con las URL de servicio de que se han generado para el entorno, como author https://author-p12345-e6789.adobeaemcloud.com
y publish https://publish-p12345-e6789.adobeaemcloud.com
. Las direcciones URL base para cada uno de estos dominios predeterminados se leen desde variables de entorno definidas por Cloud Manager.
Como referencia, la configuración OSGi predeterminada para com.day.cq.commons.impl.ExternalizerImpl.cfg.json
es efectivamente:
{
"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]"
]
}
El valor predeterminado local
, author
, preview
, y publish
Las asignaciones de dominio externalizador en la configuración OSGi deben conservarse con el original $[env:...]
valores enumerados anteriormente.
Implementación de un com.day.cq.commons.impl.ExternalizerImpl.cfg.json
AEM archivo a la que se va a crear un as a Cloud Service que omita cualquiera de estas asignaciones de dominio predeterminadas, lo que puede provocar un comportamiento impredecible en la aplicación.
Para anular la variable preview
y publish
Utilice las variables de entorno de Cloud Manager como se describe en el artículo AEM Configuración de OSGi para la as a Cloud Service y establecer el predefinido AEM_CDN_DOMAIN_PUBLISH
y AEM_CDN_DOMAIN_PREVIEW
variables.
El servicio externalizador permite definir de forma centralizada el dominio que se puede utilizar para prefijar mediante programación las rutas de recursos. El servicio externalizador solo debe utilizarse para aplicaciones con un solo dominio.
Al igual que al aplicar cualquiera AEM Configuraciones de OSGi para el as a Cloud Service de la, los siguientes pasos deben realizarse en una instancia de desarrollador local y luego comprometerse con el código del proyecto para su implementación.
Para definir una asignación de dominio para el servicio externalizador:
Vaya al Administrador de configuración a través de:
https://<host>:<port>/system/console/configMgr
Clic Externalizador de vínculos CQ de día 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
Defina un Domains asignación. Una asignación consta de un nombre único que se puede utilizar en el código para hacer referencia al dominio, a un espacio y al dominio:
<unique-name> [scheme://]server[:port][/contextpath]
Donde:
scheme
suele ser http o https, pero puede ser otro protocolo.
server
es el nombre de host (un nombre de dominio o una dirección ip).
port
(opcional) es el número de puerto.
contextpath
AEM (opcional) solo se establece si se instala la aplicación web como una aplicación web en una ruta de contexto diferente.
Por ejemplo: production https://my.production.instance
AEM Los siguientes nombres de asignación están predefinidos y siempre deben configurarse, ya que se basa en ellos:
local
- la instancia localauthor
- el sistema de creación DNSpublish
- el sitio web público DNSUna configuración personalizada le permite agregar una nueva categoría, como production
, staging
AEM o incluso sistemas externos no relacionados con el uso de la, como my-internal-webservice
. Es útil evitar codificar estas URL en diferentes lugares del código base de un proyecto.
Clic Guardar para guardar los cambios.
Esta sección muestra algunos ejemplos de cómo se puede utilizar el servicio Externalizer.
No se deben crear vínculos absolutos en el contexto de HTML. Por lo tanto, no utilice esta utilidad en estos casos.
Para externalizar una ruta con el dominio "publicar":
String myExternalizedUrl = externalizer.publishLink(resolver, "/my/page") + ".html";
Suponiendo 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 "author":
String myExternalizedUrl = externalizer.authorLink(resolver, "/my/page") + ".html";
Suponiendo 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 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 la Javadocs.