Exteriorizaçã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 um AEM como uma instância do Cloud Service não pode saber seu URL externamente visível e, à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.

Este artigo explica como configurar o serviço Externalizador e como usá-lo. Para obter detalhes técnicos do serviço, consulte o Javadocs.

Comportamento padrão do Externalizador e Como substituir

Pronto para uso, o serviço Externalizador tem valores como author-p12345-e6789.adobeaemcloud.com e publish-p12345-e6789.adobeaemcloud.com.

Para substituir esses valores, use as variáveis de ambiente do Cloud Manager, conforme descrito no artigo Configuração do OSGi para AEM como um Cloud Service e definição das variáveis predefinidas AEM_CDN_DOMAIN_AUTHOR e AEM_CDN_DOMAIN_PUBLISH.

Configurar o Serviço Externalizador

O serviço Externalizador permite definir centralmente o domínio que pode ser usado para prefixar programaticamente caminhos de recursos. O serviço Externalizador só deve ser usado para aplicativos com um único domínio.

OBSERVAÇÃO

Como ao aplicar qualquer configuração OSGi para AEM como um Cloud Service, as seguintes etapas devem ser executadas em uma instância de desenvolvedor local e, em seguida, confirmadas no código do projeto para implantação.

Para definir um mapeamento de domínio para o serviço Externalizador:

  1. Navegue até o Configuration Manager por:

    https://<host>:<port>/system/console/configMgr

  2. Clique em Day CQ Link Externalizer para abrir a caixa de diálogo de configuração.

    A configuração OSGi do Externalizador

    OBSERVAÇÃO

    O link direto para a configuração é https://<host>:<port>/system/console/configMgr/com.day.cq.commons.impl.ExternalizerImpl

  3. Defina um mapeamento Domains. 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:

    • scheme geralmente é http ou https, mas pode ser outro protocolo.

      • É recomendável usar https para aplicar links https.
      • 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 (um nome de domínio ou endereço ip).

    • port (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
    • author - DNS do sistema de criação
    • publish - DNS, o sítio web público
    OBSERVAÇÃO

    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 rígida desses URLs em diferentes locais na base de código de um projeto.

  4. Clique em Salvar para salvar as alterações.

Usar o Serviço Externalizador

Esta seção mostra alguns exemplos de como o serviço Externalizador pode ser usado.

OBSERVAÇÃO

Nenhum link absoluto deve ser criado no contexto do HTML. Por conseguinte, este utilitário não deve ser utilizado nestes casos.

  • 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 termina 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 termina 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 termina com o valor :

    • https://publish-3.internal/contextpath/my/page.html

DICA

Você pode encontrar mais exemplos no Javadocs.

Nesta página