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:
- Inicie o servidor de programação conforme descrito anteriormente.
- Aceda à consola de desenvolvimento.
- 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.