Usar o servidor de desenvolvimento local

A CLI do Google Cloud para Java inclui um servidor de desenvolvimento local para testar a sua aplicação no seu computador. O servidor de desenvolvimento local emula o ambiente de tempo de execução do Java do App Engine e todos os respetivos serviços, incluindo o Datastore.

Executar o servidor Web de programação

Para obter informações sobre como definir as propriedades do sistema e as variáveis de ambiente para a sua app, consulte Como os pedidos são processados.

Também pode executar o servidor Web de desenvolvimento a partir de uma linha de comandos. O comando a executar encontra-se no diretório google-cloud-sdk/bin/ do SDK.

Sintaxe de comandos do Windows:

google-cloud-sdk\bin\java_dev_appserver.cmd [options] [WAR_DIRECTORY_LOCATION]

Sintaxe de comandos do Linux ou macOS:

google-cloud-sdk/bin/java_dev_appserver.sh [options] [WAR_DIRECTORY_LOCATION]

O comando usa a localização do diretório WAR da sua aplicação como um argumento.

Parar o servidor de desenvolvimento

Para parar o servidor Web, prima Ctrl-C.

Detetar o ambiente de tempo de execução da aplicação

Para determinar se o seu código está a ser executado em produção ou no servidor de desenvolvimento local, pode verificar o valor do método SystemProperty.environment.value(). Por exemplo:

if (SystemProperty.environment.value() == SystemProperty.Environment.Value.Production) {
   // Production
 } else {
  // Local development server
  // which is: SystemProperty.Environment.Value.Development
}

Usar o emulador do Datastore local

O servidor Web de desenvolvimento simula o Datastore através de um Datastore local suportado por ficheiros no seu computador. O Datastore tem o nome local_db.bin e é criado no diretório WAR da sua aplicação, no diretório WEB-INF /appengine-generated/. Não é carregado com a sua aplicação.

Este Datastore persiste entre invocações do servidor Web, pelo que os dados que armazena continuam disponíveis na próxima vez que executar o servidor Web. Para limpar o conteúdo do Datastore, encerre o servidor e, em seguida, elimine este ficheiro.

Conforme descrito na configuração do índice do armazenamento de dados, o servidor de desenvolvimento pode gerar a configuração dos índices do armazenamento de dados necessários pela sua aplicação, determinada a partir das consultas que executa enquanto a testa. Isto gera um ficheiro denominado datastore-indexes-auto.xml no diretório WEB-INF/appengine-generated/ no WAR. Para desativar a configuração automática do índice, crie ou edite o ficheiro datastore-indexes.xml no diretório WEB-INF/, usando o atributo autoGenerate="false" para o elemento <datastore-indexes>.

Navegar no Datastore no servidor de desenvolvimento

Para procurar o seu Datastore local através do servidor Web de desenvolvimento:

  1. Inicie o servidor de programação conforme descrito anteriormente.
  2. Aceda à consola de desenvolvimento.
  3. Clique em Datastore Viewer no painel de navegação esquerdo para ver o conteúdo do Datastore local.

O modelo de consistência do Cloud Datastore

Por predefinição, o Datastore local está configurado para que a percentagem de gravações do Datastore que não são imediatamente visíveis em consultas globais seja definida como 10%.

Para ajustar este nível de consistência, defina a propriedade do sistema datastore.default_high_rep_job_policy_unapplied_job_pct com um valor correspondente à quantidade de consistência eventual que quer que a sua aplicação veja.

-Ddatastore.default_high_rep_job_policy_unapplied_job_pct=20

Se estiver a definir esta propriedade através da linha de comandos java_dev_appserver.sh, tem de usar --jvm_flag=... para definir a propriedade:

google_cloud_sdk/bin/java-dev_appserver.sh  --jvm_flag=-Ddatastore.default_high_rep_job_policy_unapplied_job_pct=20

O intervalo válido para datastore.default_high_rep_job_policy_unapplied_job_pct é entre 0 e 100. Se usar números fora deste intervalo, recebe um erro.

Especificar a política de atribuição automática de IDs

Pode configurar a forma como o Datastore local atribui IDs de entidades automáticos.

As seguintes políticas de atribuição automática de IDs são suportadas no servidor de desenvolvimento:

sequential
Os IDs são atribuídos a partir da sequência de números inteiros consecutivos.
scattered
Os IDs são atribuídos a partir de uma sequência não repetitiva de números inteiros distribuídos de forma aproximadamente uniforme.

A política predefinida no Datastore local é scattered.

Para especificar a política de ID automático, defina a propriedade do sistema datastore.auto_id_allocation_policy como sequential ou scattered.

-Ddatastore.auto_id_allocation_policy=scattered

Para definir esta propriedade do sistema através de uma flag transmitida à macro dev_appserver:

java_dev_appserver --jvm_flag=-Ddatastore.auto_id_allocation_policy=scattered

Simular contas de utilizador

O servidor Web de desenvolvimento simula as Contas Google com as suas próprias páginas de início e fim de sessão. Quando executados no servidor Web de programação, os métodos que geram URLs de início de sessão e de fim de sessão devolvem URLs para /_ah/login e /_ah/logout no servidor local.

A página de início de sessão de desenvolvimento inclui um formulário onde pode introduzir um endereço de email. A sua sessão usa o endereço de email que introduzir como utilizador ativo.

Para que a aplicação considere que o utilizador com sessão iniciada é um administrador, selecione a caixa de verificação "Iniciar sessão como administrador" no formulário.

Usar a obtenção de URLs

Quando a sua aplicação usa a API URL Fetch para fazer um pedido HTTP, o servidor Web de desenvolvimento faz o pedido diretamente a partir do seu computador. O comportamento pode ser diferente de quando a sua aplicação é executada no App Engine se usar um servidor proxy para aceder a Websites.

A consola de programação

O servidor Web de programação inclui uma aplicação Web de consola. Com a consola, pode procurar no Datastore local.

Para aceder à consola, visite o URL /_ah/admin no seu servidor: http://localhost:8080/_ah/admin

Argumentos da linha de comandos

Para ver as opções de comando do servidor de desenvolvimento local, consulte aqui.