Arquivo de configuração dispatch.xml

Com o dispatch.xml, é possível modificar as regras de roteamento. Você pode usar o arquivo dispatch.xml para enviar solicitações de entrada para um serviço específico (anteriormente conhecido como módulos) com base no caminho ou nome do host na URL.

Para mais informações, consulte Como as solicitações são roteadas.

Como implantar o arquivo de expedição

O arquivo dispatch.xml precisa residir no diretório WEB-INF do serviço padrão. Se quiser implantar somente o arquivo de expedição, use o comando appcfg update_dispatch e especifique o diretório para o serviço padrão. Veja se todos os serviços mencionados no arquivo já foram implantados antes de usar o seguinte comando:

  • Faça a implantação sem alterar a versão disponível atualmente. Para isso, basta substituí-la pelo caminho que leva ao diretório principal do aplicativo:

    appcfg.sh update_dispatch <application directory>
    
  • Como alternativa, aplique cd ao diretório do aplicativo que contém o serviço padrão e, em seguida, execute o comando:

    appcfg.sh update_dispatch .
    

Você também pode implantar o arquivo de expedição ao mesmo tempo que implanta um ou mais serviços. Para isso, basta adicionar o sinalizador opcional auto_update_dispatch, que pode ser usado em dois formulários:

appcfg.sh --auto_update_dispatch update <app-directory>|<files...>
appcfg.sh -D update <app-directory>|<files...>

Para mais informações sobre os comandos de implantação, consulte Como implantar um aplicativo Java.

Sintaxe

O elemento raiz no arquivo dispatch.xml é <dispatch-entries>, e cada entrada é um elemento <dispatch> que contém os elementos a seguir.

As regras definidas por você no arquivo de expedição precisam usar padrões de URL HTTP que incluem a notação "." para separar subdomínios. Os URLs definidos com a notação HTTPS "-dot-" não são compatíveis.

As regras de despacho dependem da ordem e também podem se aplicar aos URLs definidos no arquivo cron.

Elemento Descrição
<module>

Especifica o nome do serviço que processará as solicitações que correspondem ao padrão url.

url

No elemento `url`, você define o padrão de URL, que pode incluir o nome do host e o caminho do URL, não ultrapassando 100 caracteres. Para o elemento `service`, especifique o nome do serviço que deve processar as solicitações recebidas correspondentes ao padrão do URL do elemento `url`.

Dica: é possível incluir padrões glob como o caractere curinga `*` no elemento `url`. No entanto, esses padrões podem ser usados somente antes do nome do host e no final do caminho do URL.

Um padrão de URL que pode incluir o nome do host e o caminho do URL. Os caracteres glob podem ser usados para corresponder a padrões. Os caracteres Glob só podem ser especificados no início e no final do padrão.

As regras de expedição também se aplicam aos URLs usados na configuração cron ou na configuração da fila de tarefas.

Os caminhos de URL que começam com /_ah/ não são roteados pelo arquivo de expedição.

Exemplo

Veja a seguir um arquivo de expedição de amostra que encaminha solicitações para http://simple-sample.appspot.com e solicitações como http://simple-sample.appspot.com/favicon.ico para o <módulo> default. Todo o conteúdo estático é disponibilizado a partir do <módulo> default. As solicitações para dispositivos móveis, como http://simple-sample.appspot.com/mobile/, são encaminhadas para um front-end de dispositivos móveis. As solicitações de workers, como http://simple-sample.appspot.com/work/, são encaminhadas para um backend estático.

<?xml version="1.0" encoding="UTF-8"?>
<dispatch-entries>
  <dispatch>
      <!-- Default module serves the typical web resources and all static resources. -->
      <url>*/favicon.ico</url>
      <module>default</module>
  </dispatch>
  <dispatch>
      <!-- Default module serves simple hostname request. -->
      <url>simple-sample.appspot.com/</url>
      <module>default</module>
  </dispatch>
  <dispatch>
      <!-- Send all mobile traffic to the mobile frontend. -->
      <url>*/mobile/*</url>
      <module>mobile-frontend</module>
  </dispatch>
  <dispatch>
      <!-- Send all work to the one static backend. -->
      <url>*/work/*</url>
      <module>static-backend</module>
  </dispatch>
</dispatch-entries>

Limites

O arquivo de expedição pode conter até 20 regras de roteamento. Quando você especificar a string do URL, nem o nome do host nem o caminho podem ter mais de 100 caracteres.

Como excluir todas as regras de despacho

Para excluir todas as regras de expedição:

  1. Edite o conteúdo do arquivo dispatch.xml para:

    <?xml version="1.0" encoding="UTF-8"?>
    <dispatch-entries/>
    
  2. Implemente o arquivo dispatch.xml no App Engine.