Show Menu
TÓPICOS×

Externalização de URLs

No AEM, o 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 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 os Javadocs .

Configuração do serviço Externalizer

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 :
  1. Navegue até o gerenciador de configuração por meio de Ferramentas , em seguida, Console ​Web ou insira:
    https://<host>:<port>/system/console/configMgr
  2. Clique em Externalizador de links do CQ de dia 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
  3. Defina um mapeamento de domínios : 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:
    • o esquema geralmente é http ou https, mas também pode ser ftp etc.
      • use https para aplicar links https se desejar
      • 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.
    • o contexto (opcional) só é definido se o AEM estiver instalado como um aplicativo da Web em um caminho de contexto diferente.
    Por exemplo: production https://my.production.instance
    Os seguintes nomes de mapeamento são predefinidos e devem ser sempre definidos, pois o AEM depende deles:
    • local - a instância local
    • author - o DNS do sistema de criação
    • publish - DNS, o sítio Web público
    Uma configuração personalizada permite adicionar uma nova categoria, como production , staging ou até mesmo sistemas externos não AEM, como my-internal-webservice . É útil evitar a codificação desses URLs em diferentes locais na base de códigos de um projeto.
  4. Click Save to save your changes.
A Adobe recomenda que você adicione a configuração ao repositório .

Uso do serviço Externalizer

Esta seção mostra alguns exemplos de como o serviço Externalizer pode ser usado:
  1. Para obter o serviço Externalizer em um JSP:
    Externalizer externalizer = resourceResolver.adaptTo(Externalizer.class);
    
    
  2. Para externalizar um caminho com o domínio 'publicar':
    String myExternalizedUrl = externalizer.publishLink(resolver, "/my/page") + ".html";
    
    
    Assumindo o mapeamento de domínio:
    • publish https://www.website.com
    myExternalizedUrl termina com o valor:
    • https://www.website.com/contextpath/my/page.html
  3. Para externalizar um caminho com o domínio 'autor':
    String myExternalizedUrl = externalizer.authorLink(resolver, "/my/page") + ".html";
    
    
    Assumindo o mapeamento de domínio:
    • author https://author.website.com
    myExternalizedUrl termina com o valor:
    • https://author.website.com/contextpath/my/page.html
  4. Para externalizar um caminho com o domínio 'local':
    String myExternalizedUrl = externalizer.externalLink(resolver, Externalizer.LOCAL, "/my/page") + ".html";
    
    
    Assumindo o mapeamento de domínio:
    • local https://publish-3.internal
    myExternalizedUrl termina com o valor:
    • https://publish-3.internal/contextpath/my/page.html
  5. Você pode encontrar mais exemplos nos Javadocs .