Exteriorização de URLs externalizing-urls
Em AEM, a variável Externalizador é 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 externamente visível se estiver em execução atrás de uma camada da Web e porque, à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 a variável Externalizador e como usá-lo. Para obter mais detalhes, consulte o Javadocs.
Configurar o serviço Externalizador configuring-the-externalizer-service
O Externalizador 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 usado para fazer referência programaticamente ao domínio.
Para definir um mapeamento de domínio para a variável Externalizador serviço:
-
Navegue até o gerenciador de configuração por meio de Ferramentas, em seguida Console da Web ou insira
https://<host>:<port>/system/console/configMgr.
-
Clique em Externalizador de links CQ do dia para abrir a caixa de diálogo de configuração.
note note NOTE 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 fazer referência ao domínio, a um espaço e ao domínio:
<unique-name> [scheme://]server[:port][/contextpath]
, em que:- esquema geralmente é http ou https, mas também pode ser ftp etc.; use https para aplicar links https, se desejado; ele será usado se o código do cliente não substituir o esquema ao solicitar a externalização de um URL.
- server é o nome do host (pode ser um nome de domínio ou endereço ip).
- porta (opcional) é o número da porta.
- contextpath (opcional) só será definido se AEM for instalado como um aplicativo web em um caminho de contexto diferente.
Por exemplo:
production https://my.production.instance
Os seguintes nomes de mapeamento são predefinidos e devem sempre ser definidos conforme AEM dependem deles:
- local - a instância local
- autor - DNS do sistema de criação
- publicar - DNS, o sítio web público
note note NOTE Uma configuração personalizada permite adicionar uma nova categoria, como "produção", "armazenamento temporário" ou até mesmo sistemas externos não AEM, como "meu serviço interno da Web", e é útil para evitar a codificação dessas URLs em diferentes locais na base de código de um projeto. -
Clique em Salvar para salvar as alterações.
Uso do serviço Externalizador using-the-externalizer-service
Esta seção mostra alguns exemplos de como a variável Externalizador pode ser usado.
Para obter o serviço Externalizador em um JSP:
Externalizer externalizer = resourceResolver.adaptTo(Externalizer.class);
Para exteriorizar um caminho com o domínio "publicar":
String myExternalizedUrl = externalizer.publishLink(resolver, "/my/page") + ".html";
Considerando o mapeamento de domínio " publish https://www.website.com
", myExternalizedUrl acaba com o valor " https://www.website.com/contextpath/my/page.html
".
Para exteriorizar um caminho com o domínio "autor":
String myExternalizedUrl = externalizer.authorLink(resolver, "/my/page") + ".html";
Considerando o mapeamento de domínio " author https://author.website.com
", myExternalizedUrl acaba com o valor " https://author.website.com/contextpath/my/page.html
".
Para exteriorizar um caminho com o domínio "local":
String myExternalizedUrl = externalizer.externalLink(resolver, Externalizer.LOCAL, "/my/page") + ".html";
Considerando o mapeamento de domínio " local https://publish-3.internal
", myExternalizedUrl acaba com o valor " https://publish-3.internal/contextpath/my/page.html
".
Você pode encontrar mais exemplos na Javadocs.