A Google Cloud CLI para Java inclui um servidor de desenvolvimento local para testar o aplicativo no computador. No servidor de desenvolvimento local, são emulados o Java Runtime Environment do App Engine e todos os respectivos serviços, incluindo o Datastore.
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á localizado no diretório google-cloud-sdk/bin/
do SDK.
Sintaxe de comando do Windows:
google-cloud-sdk\bin\java_dev_appserver.cmd [options] [WAR_DIRECTORY_LOCATION]
Sintaxe de comando do Linux ou macOS:
google-cloud-sdk/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()
. Por 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 Cloud 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_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
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 de linha de comando
Para ver as opções de comandos do servidor de desenvolvimento local, consulte este link.