No AEM, o Externalizer é um serviço OSGI que permite transformar programaticamente um caminho de recurso (por exemplo, /path/to/my/page
) em um URL externo e absoluto (por exemplo, https://www.mycompany.com/path/to/my/page
) ao prefixar o caminho com um DNS pré-configurado.
Como uma instância não pode saber seu URL visível externamente se estiver sendo executado atrás de uma camada da Web e como, às vezes, um link precisa ser criado fora do escopo da solicitação, esse serviço fornece um local central para configurar esses URLs externos e criá-los.
Esta página explica como configurar o serviço Externalizer e como usá-lo. Para obter mais detalhes, consulte Javadocs.
O serviço Externalizer permite definir centralmente vários domínios que podem ser usados para prefixar programaticamente caminhos de recursos. Cada domínio é identificado por um nome exclusivo que é usado para fazer referência programaticamente ao domínio.
Para definir um mapeamento de domínio para o serviço Externalizer:
Navegue até o gerenciador de configuração por Ferramentas, Console Web ou digite https://<host>:<port>/system/console/configMgr.
Clique em Externalizador de links do Day CQ para abrir a caixa de diálogo de configuração.
O link direto para a configuração é https://<host>:<port>/system/console/configMgr/com.day.cq.commons.impl.ExternalizerImpl
Defina um mapeamento de domínio: um mapeamento consiste em um nome exclusivo que pode ser usado no código para referenciar o domínio, um espaço e o domínio:
<unique-name> [scheme://]server[:port][/contextpath]
, em que:
Por exemplo: production https://my.production.instance
Os seguintes nomes de mapeamento são predefinidos e devem ser sempre definidos como AEM depende deles:
Uma configuração personalizada permite que você adicione uma nova categoria, como "produção", "armazenamento temporário" ou até mesmo sistemas externos não AEM, como "meu serviço da Web interno", e é útil para evitar a codificação desses URLs em diferentes locais na base de códigos de um projeto.
Clique em Salvar para salvar as alterações.
O Adobe recomenda que você adicione a configuração ao repositório.
Esta seção mostra alguns exemplos de como o serviço Externalizer pode ser usado.
Para obter o serviço Externalizer em um JSP:
Externalizer externalizer = resourceResolver.adaptTo(Externalizer.class);
Para externalizar um caminho com o domínio 'publicar':
String myExternalizedUrl = externalizer.publishLink(resolver, "/my/page") + ".html";
Supondo que o mapeamento de domínio " publish https://www.website.com
", myExternalizedUrl termine com o valor " https://www.website.com/contextpath/my/page.html
".
Para externalizar um caminho com o domínio 'autor':
String myExternalizedUrl = externalizer.authorLink(resolver, "/my/page") + ".html";
Supondo que o mapeamento de domínio " author https://author.website.com
", myExternalizedUrl termine com o valor " https://author.website.com/contextpath/my/page.html
".
Para externalizar um caminho com o domínio 'local':
String myExternalizedUrl = externalizer.externalLink(resolver, Externalizer.LOCAL, "/my/page") + ".html";
Supondo que o mapeamento de domínio " local https://publish-3.internal
", myExternalizedUrl termine com o valor " https://publish-3.internal/contextpath/my/page.html
".
Você pode encontrar mais exemplos em Javadocs.