Como implantar um aplicativo Java

Implante o aplicativo para fazer upload e executar 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.

Se você usar a ferramenta obsoleta appcfg para implantar aplicativos, consulte a referência do appcfg para informações sobre como usar a ferramenta.

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 de projeto do Cloud 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.

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]

Também é possível definir um username e um password para o proxy. Para mais informações, veja gcloud config.

Como implantar um aplicativo

Para implantar o aplicativo no App Engine, use a ferramenta de compilação do Maven (recomendado) ou o comando gcloud app deploy no 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 projeto em que o arquivo pom.xml está localizado:

mvn package appengine:deploy -Dapp.deploy.projectId=PROJECT_ID

Substitua PROJECT_ID pelo ID do projeto do Cloud. Se seu arquivo pom.xmlespecificar o ID do projeto, não será necessário incluir a propriedade -Dapp.deploy.projectId no comando executado.

Se você estiver usando o plug-in Maven baseado no SDK do App Engine, use o comando mvn appengine:update para implantar o aplicativo.

Como usar a linha de comando gcloud

  gcloud app deploy [CONFIGURATION_FILES]

Substitua [CONFIGURATION_FILES] pelo caminho para um ou mais arquivos de configuração. Use um único espaço em branco para separar caminhos.

Sinalizações opcionais:

  • --version: especifica um ID de versão personalizado. Se você não especificar um ID de versão, o App Engine gerará um.
  • --no-promote: implanta o aplicativo sem encaminhar automaticamente todo o tráfego para essa versão. Por padrão, cada versão que você implanta é automaticamente configurada para receber todo o tráfego.
  • --project: especifica um ID alternativo do projeto do Cloud para o que você inicializou como padrão na ferramenta gcloud.

Para mais informações, consulte a referência gcloud app deploy ou execute gcloud help na linha de comando.

Escolher códigos 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-dot-my-service.[REGION_ID].r.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 ID de instância 123, no qual as versões do serviço my-service estão em execução.

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.

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. Implantar atualizações em serviços pode incluir a atualização de arquivos de configuração individuais ou 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 o serviço de front-end e a outra como o back-end do seu aplicativo. Em seguida, você pode implantar 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:

  • Inicialmente, você precisa implantar uma versão do aplicativo no serviço default antes de criar e implantar os serviços subsequentes.

  • Especifique o ID do serviço no arquivo de configuração appengine-web.xml da versão correspondente. Para isso especificar o ID do serviço, inclua a definição do 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 caminhos relativos e os nomes dos arquivos 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 package appengine:deploy -Dapp.deploy.projectId=PROJECT_ID

    Substitua PROJECT_ID pelo ID do projeto do Cloud. Se seu arquivo pom.xmlespecificar o ID do projeto, não será necessário incluir a propriedade -Dapp.deploy.projectId no comando executado.

Uso da gcloud

    gcloud app deploy [CONFIGURATION_FILES]

Substitua [CONFIGURATION_FILES] pelo caminho para um ou mais arquivos de configuração. Use um espaço em branco para separar caminhos.

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 pelos aplicativos, faça upload do arquivo de configuração datastore-indexes.xml no 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 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:

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.
Se o projeto do Cloud não incluir o aplicativo necessário do Google App Engine, o comando gcloud app deploy poderá falhar quando tentar executar o comando gcloud app create. Somente contas com o papel de 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 dev_appserver.sh quando instalou o SDK do App Engine (obsoleto), talvez precise especificar o caminho completo do diretório para executar a ferramenta. Por exemplo: [PATH_TO_APP_ENGINE_SDK]/dev_appserver.sh.
Import Error
Se você instalou o SDK do Cloud e também o SDK do App Engine original, as entradas em PATH poderão entrar em conflito entre si e causar erros de importação. Se você recebeu erros ao executar comandos do SDK do Cloud, tente usar explicitamente o SDK do App Engine original. É possível mover a entrada do SDK do App Engine original para anterior no PATH para que esses comandos tenham prioridade. Como alternativa, é possível executar o comando especificando o caminho completo do diretório: [PATH_TO_APP_ENGINE_SDK]/java_dev_appserver.sh.
[400] The first service (module) you upload to a new application must be the 'default' service (module)
Antes de implantar e criar os vários serviços do aplicativo, é necessário primeiro implantar e criar serviço default. Para detalhes sobre como implantar uma versão no serviço default, consulte Como implantar vários aplicativos de serviço.
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 Cloud para excluir uma versão mais antiga 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 está correto e corresponde ao valor do ID do projeto do Console do Cloud. Em seguida, verifique as permissões do projeto no console e verifique se sua conta está listada com um nível de permissão suficiente para permitir a implantação de aplicativos.
Outro erro de implantação
Se a implantação falhar, verifique se a API do Cloud Build está ativada no projeto. O App Engine ativa essa API automaticamente na primeira vez que você implanta um aplicativo, mas se alguém tiver desativado a API, as implantações falharão.

A seguir