Como implantar um aplicativo em Java

Implante o aplicativo para fazer upload dele e executá-lo no App Engine. Ao implantar aplicativos, é possível criar versões deles e dos serviços correspondentes no App Engine. Podem ser implantados aplicativos inteiros, inclusive todos os arquivos de código-fonte e configuração. Além disso, é possível implantar e atualizar versões individuais ou arquivos de configuração.

Para implantar os aplicativos de maneira programática, use a API Admin.

Antes de começar

Para implantar o aplicativo:

Para implantar seu aplicativo usando a ferramenta de compilação do Maven, configure o projeto para usar o plug-in Maven para App Engine.

Como instalar a ferramenta de linha de comando gcloud

Para implantar o aplicativo com a ferramenta gcloud, você precisa fazer o download, instalar e inicializar o SDK do Cloud.

Fazer o download do SDK

Se a ferramenta gcloud já estiver instalada e você quiser configurá-la para usar um ID do projeto do GCP diferente do inicializado, consulte Como gerenciar as configurações do SDK do Cloud.

Usar um proxy

Caso esteja executando o comando de implantação de um sistema que usa proxy HTTP ou HTTPS, é preciso configurar a ferramenta para que possa se comunicar através do proxy.

gcloud

Execute os seguintes comandos para configurar a ferramenta gcloud :

gcloud config set proxy/type [PROXY_TYPE]
gcloud config set proxy/address [PROXY_ADDRESS]
gcloud config set proxy/port [PROXY_PORT]

Defina também um username e password para o proxy. Para mais informações, veja gcloud config.

appcfg

Defina a variável de ambiente que corresponde ao proxy:

Mac/Linux
export HTTP_PROXY="http://cache.example.com:3128"
export HTTPS_PROXY="http://cache.example.com:3128"
Windows
set HTTP_PROXY=http://cache.example.com:3128
set HTTPS_PROXY=http://cache.example.com:3128

Como implantar um aplicativo

Para implantar o aplicativo no App Engine, use a ferramenta de compilação do Maven (recomendado), a ferramenta appcfg ou o comando gcloud app deploy de dentro do diretório raiz do aplicativo.

Para implantar o aplicativo com a ferramenta de compilação do Maven, execute o seguinte comando no diretório de nível superior do seu projeto, em que o arquivo pom.xml está localizado.

Como usar o appcfg

Para implantar o aplicativo, execute o comando appcfg com a ação update e o caminho do diretório do arquivo WAR. Por exemplo:

Windows

appengine-java-sdk\bin\appcfg.cmd [options] update [WAR_LOCATION]

Mac/Linux

./appengine-java-sdk/bin/appcfg.sh [options] update [WAR_LOCATION]

Se você estiver usando um proxy HTTP, inclua o argumento --proxy para informar o endereço de appcfg. Se você usar um proxy diferente para HTTPS, inclua também o argumento --proxy_https. Para mais informações, consulte os argumentos de linha de comando appcfg.

Windows

appengine-java-sdk\bin\appcfg.cmd --proxy=10.1.2.3 update [WAR_LOCATION]

Mac/Linux

./appengine-java-sdk/bin/appcfg.sh --proxy=10.1.2.3 update [WAR_LOCATION]

Por padrão, a versão implantada inicialmente em um serviço é automaticamente configurada para receber 100% de tráfego. No entanto, todas as versões subsequentes que você implanta no mesmo serviço precisam ser configuradas manualmente. Caso contrário, elas não receberão tráfego.

A ferramenta usa o ID do aplicativo automaticamente a partir do arquivo appengine-web.xml. Porém, muitos aplicativos de exemplo nossos omitem <application> do arquivo appengine-web.xml, bem como <version>. Portanto, você precisa garantir que um código de projeto do GCP seja especificado para o ID do aplicativo juntamente com o código da versão de sua escolha, por exemplo:

Windows

appengine-java-sdk\bin\appcfg.cmd -A [YOUR_PROJECT_ID] -V [YOUR_VERSION_ID] update [WAR_LOCATION]

Mac/Linux

./appengine-java-sdk/bin/appcfg.sh -A [YOUR_PROJECT_ID] -V [YOUR_VERSION_ID] update [WAR_LOCATION]

Se você implantar uma versão que especifique o mesmo ID de uma versão que já existe no App Engine, os arquivos implantados substituirão a versão atual. Quando você sobrescreve seu aplicativo, o tráfego pode ser interrompido. Recomendamos implantar o aplicativo com um ID de versão exclusivo e migrar o tráfego para a nova versão.

Como usar a linha de comando gcloud

gcloud app deploy [YOUR_DEPLOYMENTS]

Em que [YOUR_DEPLOYMENTS] é um ou mais caminhos e nomes de arquivos de configuração, separados por um único espaço em branco.

Sinalizações opcionais:

  • Inclua a sinalização --version para especificar um ID de versão personalizado. Caso contrário, um código será gerado para você.
  • Para implantar o aplicativo sem direcionar automaticamente todo o tráfego para essa versão, inclua a sinalização --no-promote.
  • Inclua a sinalização --project. Isso especificará um ID de projeto alternativo do GCP para o padrão inicialmente definido na ferramenta gcloud.

Por padrão, cada versão que você implanta é automaticamente configurada para receber todo o tráfego. Para ver opções de configuração, observe a sinalização --promote na referência de gcloud app deploy.

Dica: execute gcloud help na linha de comando para receber uma lista completa de argumentos e sinalizações.

Como escolher IDs de versão únicos

Para instâncias com escalonamento manual, o código da versão deve começar com uma letra para distinguir dos códigos de instância numéricos. Isso garante que as solicitações sejam encaminhadas para o destino correto e evita a ambiguidade com padrões de URL como 123.my-service.appspot.com, que podem ser interpretados de duas maneiras:

  • Se a versão 123 existir, a solicitação será encaminhada para a versão 123 do serviço my-service.
  • Se a versão 123 não existir, a solicitação será encaminhada para o código da instância 123, onde as versões do serviço my-service estão sendo executadas.

Nomeie suas versões como quiser no caso de instâncias configuradas para escalonamento automático ou básico, porque a segmentação dessas instâncias não está disponível.

Como implantar vários aplicativos de serviços

Quando o aplicativo é fatorado em vários serviços, é possível implantar e atualizar serviços segmentados individualmente ou todos os serviços simultaneamente. A implantação de atualizações de serviços pode incluir atualização de arquivos de configuração individuais ou atualização do código-fonte nas versões correspondentes.

Por exemplo, podem ser implantadas e criadas duas versões no App Engine, sendo que cada versão é executada no próprio serviço. A primeira versão serve como serviço de front-end e a outra como back-end do aplicativo. Em seguida, podem ser implantados arquivos de configuração individuais para atualizar apenas as configurações de um serviço. Também é possível implantar uma nova versão em um serviço para atualizar o código-fonte do front-end, back-end ou ambos simultaneamente.

Requisitos para vários serviços

Use os mesmos comandos para implantar e atualizar os diversos serviços que compõem o aplicativo com os requisitos a seguir:

  • Implante uma versão do aplicativo no serviço default antes de criar e implantar os serviços posteriores.

  • Especifique o ID do serviço no arquivo de configuração appengine-web.xml da versão correspondente. Para fazer isso, inclua a definição de elemento module: [YOUR_SERVICE_ID] em cada arquivo de configuração. Por padrão, a exclusão dessa definição de elemento do arquivo de configuração faz com que a versão seja implantada no serviço default.

  • Especifique todos os arquivos de configuração appengine-web.xml correspondentes no comando de implantação para implantar vários serviços simultaneamente. É preciso listar o serviço default primeiro.

Para implantar vários serviços

No diretório raiz do aplicativo em que os arquivos de configuração estão localizados, execute o comando de implantação e especifique os nomes de arquivos e os caminhos relativos para o arquivo appengine-web.xml de cada serviço.

Como usar a ferramenta de compilação do Maven

Se o diretório raiz do projeto contiver apenas os serviços, implante todos eles com um único comando do Maven.

O comando de implantação do Maven itera em cada um dos serviços do projeto para localizar os respectivos arquivos de configuração e então implantar cada serviço.

Para implantar vários serviços usando o plugin Maven, siga estas etapas:

  1. Certifique-se de que appengine-maven-plugin foi adicionado ao arquivo pai pom.xml.
  2. Execute este comando:

    mvn appengine:deploy
    

Como usar a gcloud

    gcloud app deploy [DEPLOYMENTS]

Em que [DEPLOYMENTS] é um ou mais caminhos e nomes de arquivos de configuração. Separe cada arquivo de configuração especificado usando um espaço em branco.

Como usar o appcfg

Windows

appengine-java-sdk\bin\appcfg.cmd update [DEPLOYMENTS]

Mac/Linux

./appengine-java-sdk/bin/appcfg.sh update [DEPLOYMENTS]

Em que [DEPLOYMENTS] é o caminho e nome de um ou mais arquivos de configuração, separados por um espaço em branco. Por exemplo:

Windows

appengine-java-sdk\bin\appcfg.cmd update [WAR_LOCATION] [SERVICE1_WAR_LOCATION] [MOD2_WAR_LOCATION]

Mac/Linux

./appengine-java-sdk/bin/appcfg.sh update [WAR_LOCATION] [SERVICE1_WAR_LOCATION] [MOD2_WAR_LOCATION]

Você receberá a confirmação na linha de comando assim que cada serviço for implantado com sucesso.

Como atualizar índices

Para criar ou atualizar os índices usados por seus aplicativos, faça o upload do arquivo de configuração datastore-indexes.xml para o Cloud Datastore. Os índices que ainda não existem serão criados após o upload do arquivo de configuração.

Levará algum tempo até que o Cloud Datastore crie todos os índices. Portanto, eles não estarão imediatamente disponíveis no App Engine. Se o aplicativo já estiver configurado para receber tráfego, podem ocorrer exceções nas consultas que necessitem de um índice que ainda está em processo de criação.

Para evitar exceções, é preciso aguardar a criação de todos os índices. Por exemplo:

  • Faça o upload do arquivo de configuração index.xml no Cloud Datastore antes de implantar a versão:

    1. Faça o upload do arquivo index.xml para o Cloud Datastore:

      appcfg
      appcfg.sh update_indexes [YOUR_APP_DIR]
    2. Use o Console do GCP para monitorar o status de todos os índices:

      Acessar a página do Datastore

    3. Após a criação de todos os índices, implante a nova versão no App Engine.

  • Crie os índices antes de migrar ou dividir o tráfego para a versão:

    1. Defina um novo código de versão no arquivo appengine-web.xml do aplicativo.
    2. Implante a nova versão.
    3. Use o Console do GCP para monitorar o status de todos os índices:

      Acessar a página do Datastore

    4. Após a criação de todos os índices, use o Console do GCP para migrar ou dividir o tráfego para a versão:

      Acessar a página Versões

Para mais informações sobre índices, consulte Como configurar índices do Datastore.

Resolver problemas

Estas são mensagens de erro comuns que você pode encontrar:

PERMISSION_DENIED: Operation not allowed
The "appengine.applications.create" permission is required.
Caso o aplicativo obrigatório do App Engine não esteja incluído no projeto do GCP, o comando gcloud app deploy falhará ao tentar executar o comando gcloud app create. Somente contas com o papel proprietário têm as permissões necessárias para criar aplicativos do App Engine.
Command not found

Se você não criou links simbólicos para as ferramentas appcfg.sh ou dev_appserver.sh quando instalou o SDK do App Engine (obsoleto), talvez seja necessário especificar o caminho completo do diretório para executá-las. Por exemplo, [PATH_TO_APP_ENGINE_SDK]/appcfg.sh ou [PATH_TO_APP_ENGINE_SDK]/dev_appserver.sh.

Import Error

Se você instalou o SDK original do App Engine e o do Cloud, as entradas em PATH poderão entrar em conflito e causar erros de importação. Se você recebeu mensagens de erro ao executar comandos do SDK do Cloud, tente usar o SDK original do App Engine explicitamente. Antecipe a entrada do SDK original do App Engine em seu PATH para que esses comandos tenham prioridade. Se preferir, execute o comando especificando o caminho completo do diretório: [PATH_TO_APP_ENGINE_SDK]/java_dev_appserver.sh.
Dica: no Linux ou no Mac, é possível executar which dev_appserver.py para determinar qual SDK é o primeiro no PATH.

[400] The first service (module) you upload to a new application must be the 'default' service (module)

Antes de implantar e criar vários serviços do aplicativo, é preciso implantar e criar o serviço default. Para detalhes sobre como implantar uma versão no serviço default, consulte Como implantar vários aplicativos de serviços.

Too Many Versions (403)

O App Engine tem um número limitado de versões implantadas do aplicativo. Esse número é diferente para aplicativos gratuitos e aplicativos implantados. Você pode usar o console do GCP para excluir uma versão anterior e fazer upload do código mais recente. You do not have permission to modify this app (403)

Isso pode ocorrer quando a conta com que você está autenticado não tem permissão para implantar no ID do aplicativo especificado no comando ou no appengine-web.xml. Verifique se o ID do aplicativo é preciso e corresponde ao valor do ID do projeto do Console do GCP. Em seguida, verifique as permissões do projeto no Console e se sua conta está listada com um nível de permissão suficiente para permitir a implantação de aplicativos. Se a permissão da conta e o código do projeto aparentam estar corretos, você pode tentar forçar uma reautenticação do SDK removendo o arquivo .appcfg_oauth2_tokens do diretório inicial e repetindo os comandos de implantação.

A seguir

Esta página foi útil? Conte sua opinião sobre:

Enviar comentários sobre…

Ambiente padrão do App Engine para Java 8