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.
Antes de começar
Uma vez que o Java 8 atingiu o fim do apoio técnico, já não pode usar a versão mais recente do dev_appserver.py
para executar localmente as suas aplicações. Para transferir uma versão arquivada do devapp_server.py
, siga estes passos:
A partir do arquivo, transfira a pasta comprimida que contém o
dev_appserver.py
servidor para tempos de execução que atingiram o fim do apoio técnico.Extraia o conteúdo do diretório para o seu sistema de ficheiros local, como para o diretório
/home
. Pode encontrar odev_appserver.py
no diretóriogoogle_appengine/google/appengine/tools/java/bin
.
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 do SDK com o caminho relativo google_appengine/google/appengine/tools/java/bin
.
Sintaxe de comandos do Windows:
google_appengine\google\appengine\tools\java\bin\java_dev_appserver.cmd [options] [WAR_DIRECTORY_LOCATION]
Sintaxe de comandos do Linux ou macOS:
google_appengine/google/appengine/tools/java/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 armazenamento de dados
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_appengine/google/appengine/tools/java/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
O comando do servidor de desenvolvimento suporta os seguintes argumentos da linha de comandos:
--address=...
-
O endereço do anfitrião a usar para o servidor. Pode ter de definir esta opção para poder aceder ao servidor de desenvolvimento a partir de outro computador na sua rede. Um endereço de
0.0.0.0
permite o acesso ao localhost e o acesso ao nome do anfitrião. Predefinição:localhost
. --default_gcs_bucket=...
-
Defina o nome do contentor do Google Cloud Storage predefinido.
--disable_update_check
-
Se for fornecido, o servidor de desenvolvimento não contacta o App Engine para verificar a disponibilidade de uma nova versão do SDK. Por predefinição, o servidor verifica se existe uma nova versão no arranque e imprime uma mensagem se estiver disponível uma nova versão.
--generated_dir=...
-
Defina o diretório onde os ficheiros gerados são criados.
--help
-
Imprime uma mensagem útil e, em seguida, termina.
--jvm_flag=...
-
Transmita a flag especificada como um argumento da JVM. Pode ser repetido para fornecer várias flags.
--port=...
-
O número da porta a usar para o servidor. A predefinição é
8080
. --sdk_root=...
-
Um caminho para a CLI gcloud, se for diferente da localização da ferramenta.
--server=...
-
O servidor a usar para determinar a versão mais recente do SDK.