No servidor de desenvolvimento local, são emulados o Java Runtime Environment do App Engine e todos os respectivos serviços, incluindo o Datastore.
Antes de começar
Como o Java 8 chegou ao fim do suporte, não é mais possível usar a versão mais recente do dev_appserver.py
para executar localmente os aplicativos. Para fazer o download de uma versão arquivada do devapp_server.py
, siga estas etapas:
No arquivo, faça o download da pasta compactada que contém o servidor
dev_appserver.py
para ambientes de execução que atingiram o fim do suporte.Extraia o conteúdo do diretório para o sistema de arquivos local, como para o diretório
/home
. Você pode encontrardev_appserver.py
no diretóriogoogle_appengine/google/appengine/tools/java/bin
.
Como executar o servidor da Web de desenvolvimento
Para mais informações sobre como definir propriedades do sistema e variáveis de ambiente para seu aplicativo, consulte Como as solicitações são processadas.
Além disso, é possível executar o servidor da Web de desenvolvimento em um prompt de comando. O comando
a ser executado está no diretório do SDK com o caminho relativo google_appengine/google/appengine/tools/java/bin
.
Sintaxe de comando do Windows:
google_appengine\google\appengine\tools\java\bin\java_dev_appserver.cmd [options] [WAR_DIRECTORY_LOCATION]
Sintaxe de comando do Linux ou macOS:
google_appengine/google/appengine/tools/java/bin/java_dev_appserver.sh [options] [WAR_DIRECTORY_LOCATION]
O comando usa como argumento o local do diretório "WAR" do seu aplicativo.
Como parar o servidor de desenvolvimento
Para interromper o servidor da Web, pressione Ctrl-C.
Como detectar o ambiente de execução do aplicativo
Para determinar se o código está em execução na produção ou no servidor de
desenvolvimento local, verifique o valor do método
SystemProperty.environment.value()
. Exemplo:
if (SystemProperty.environment.value() == SystemProperty.Environment.Value.Production) {
// Production
} else {
// Local development server
// which is: SystemProperty.Environment.Value.Development
}
Como usar o emulador do Datastore local
O servidor da Web de desenvolvimento simula o Datastore usando um Datastore local endossado
por arquivos no seu computador. O Datastore é chamado de local_db.bin
e é
criado no diretório WAR do aplicativo, no
diretório WEB-INF /appengine-generated/
. Ele não faz parte do upload
referente ao seu aplicativo.
Esse Datastore permanece entre invocações do servidor da Web, por isso os dados armazenados por você continuarão disponíveis na próxima vez que você executar o servidor da Web. Para limpar o conteúdo do Datastore, encerre o servidor e exclua esse arquivo.
Conforme descrito na Configuração de índice
do armazenamento de dados, o
servidor de desenvolvimento pode gerar configuração para índices do Datastore que são necessários para
seu aplicativo, com base nas consultas realizadas durante os
testes. Isso gera um arquivo chamado datastore-indexes-auto.xml
no diretório
WEB-INF/appengine-generated/
do WAR. Para desativar a configuração automática de índice,
crie ou edite o arquivo datastore-indexes.xml
no diretório WEB-INF/
usando o atributo autoGenerate="false"
para o
elemento <datastore-indexes>
.
Como navegar pelo Datastore no servidor de desenvolvimento
Para navegar pelo Datastore local usando o servidor da Web de desenvolvimento:
- Inicie o servidor de desenvolvimento conforme descrito anteriormente.
- Vá para o Console de desenvolvimento.
- Clique em Leitor do Datastore no painel de navegação esquerdo para visualizar o conteúdo do Datastore local.
O modelo de consistência do Datastore
Por padrão, o Datastore local está configurado para definir como 10% a porcentagem de gravações no Datastore que não sejam imediatamente visíveis em consultas globais.
Para ajustar esse 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 você quer
que o aplicativo veja.
-Ddatastore.default_high_rep_job_policy_unapplied_job_pct=20
Se você estiver definindo essa propriedade usando o prompt de comando java_dev_appserver.sh
,
use --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
está
entre 0 e 100. Se você usar números fora desse intervalo, receberá
um erro.
Como especificar a política de alocação automática de IDs
Você pode configurar como o Datastore local atribui IDs de entidade automáticos.
As seguintes políticas de alocação de códigos automáticos são compatíveis com o servidor de desenvolvimento:
sequential
- Os IDs são atribuídos com base na sequência de números inteiros consecutivos.
scattered
- Os IDs são atribuídos de uma sequência sem repetições de números inteiros distribuídos de maneira quase uniforme.
A política padrão no Datastore local é scattered
.
Para especificar a política automática de IDs, defina a
propriedade do sistema datastore.auto_id_allocation_policy
como sequential
ou
scattered
.
-Ddatastore.auto_id_allocation_policy=scattered
Para definir essa propriedade do sistema por meio de uma sinalização passada para a macro dev_appserver:
java_dev_appserver --jvm_flag=-Ddatastore.auto_id_allocation_policy=scattered
Como simular contas de usuário
O servidor da Web de desenvolvimento simula as Contas do Google com suas próprias páginas de login
e logout. Ao serem executados no servidor web de desenvolvimento, os métodos
que geram os URLs de login e desconexão retornam URLs para /_ah/login
e
/_ah/logout
no servidor local.
A página de login do servidor de desenvolvimento inclui um formulário em que é possível inserir um endereço de e-mail. Sua sessão usa o endereço de e-mail que você inseriu como usuário ativo.
Para que o aplicativo acredite que o usuário conectado é um administrador, marque a caixa de seleção "Fazer login como administrador" no formulário.
Como usar a busca de URLs
Quando seu aplicativo usa a URL Fetch API para fazer uma solicitação HTTP, o servidor da Web de desenvolvimento efetua a solicitação diretamente do seu computador. Se você costuma usar um servidor proxy para acessar sites, o comportamento pode ser diferente de quando o aplicativo é executado no App Engine.
O console de desenvolvimento
O servidor da Web de desenvolvimento conta com um aplicativo da Web de console. Com o console, você pode navegar pelo Datastore local.
Para acessar o console, acesse o URL /_ah/admin
no seu servidor:
http://localhost:8080/_ah/admin
Argumentos da linha de comando
O comando do servidor de desenvolvimento é compatível com os seguintes argumentos da linha de comando:
--address=...
-
O endereço de host a ser usado para o servidor. Talvez seja necessário configurar isso para poder acessar o servidor de desenvolvimento a partir de outro computador na rede. O endereço
0.0.0.0
permite acesso tanto ao localhost como ao hostname. Padrão:localhost
. --default_gcs_bucket=...
-
Define o nome de bucket padrão do Google Cloud Storage.
--disable_update_check
-
Se este argumento for fornecido, o servidor de desenvolvimento não entrará em contato com o App Engine para verificar a disponibilidade de uma nova versão do SDK. Por padrão, o servidor verifica na inicialização se há uma nova versão e imprime uma mensagem caso ela esteja disponível.
--generated_dir=...
-
Define o diretório em que são criados os arquivos gerados.
--help
-
Imprime uma mensagem útil e encerra.
--jvm_flag=...
-
Passa a sinalização fornecida como um argumento JVM. Pode ser repetido para fornecer várias sinalizações.
--port=...
-
O número da porta a ser usado com o servidor. O padrão é
8080
. --sdk_root=...
-
Um caminho para a CLI gcloud, se for diferente do local da ferramenta.
--server=...
-
O servidor a ser usado para determinar a versão mais recente do SDK.