Como usar o servidor de desenvolvimento local em Java 8

O SDK do Cloud para Java inclui um servidor de desenvolvimento local para testar o aplicativo no seu 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á 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á sendo executado 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 se chama local_db.bin e é criado no diretório WAR do aplicativo, no diretório WEB-INF /appengine-generated/. O aplicativo não faz upload dele.

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/ no WAR. Para desativar a configuração automática de índices, crie ou edite o arquivo datastore-indexes.xml no diretório WEB-INF/, usando o atributo autoGenerate="false" para o elemento <datastore-indexes>. Para mais informações, consulte Configuração de índice do armazenamento de dados.

Como navegar pelo Datastore no servidor de desenvolvimento

Para navegar pelo Datastore local usando o servidor da Web de desenvolvimento:

  1. Inicie o servidor de desenvolvimento conforme descrito anteriormente.
  2. Vá para o Console de desenvolvimento.
  3. 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 de sistema datastore.default_high_rep_job_policy_unapplied_job_pct com um valor correspondente à quantidade de consistência eventual que seu aplicativo verá.

-Ddatastore.default_high_rep_job_policy_unapplied_job_pct=20

Se você for configurar essa propriedade usando o prompt de comando java_dev_appserver.sh, será necessário usar --jvm_flag=... para defini-la:

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.

Se você estiver usando o Maven, utilize appengine:devserver para transmitir essa sinalização como um argumento para jvmFlags:

<jvmFlags>
  <jvmFlag>-Ddatastore.default_high_rep_job_policy_unapplied_job_pct=20</jvmFlag>
</jvmFlags>

Como especificar a política de alocação de códigos automáticos

Você pode configurar como o Datastore local atribui códigos automáticos de entidade. As seguintes políticas de alocação de códigos automáticos são compatíveis com o servidor de desenvolvimento:

sequential
Os códigos são atribuídos com base na sequência de números inteiros consecutivos.
scattered
Os códigos são atribuídos com base em uma sequência não repetitiva de números inteiros distribuídos de maneira quase uniforme.

A política padrão no Datastore local é scattered.

Para especificar a política de códigos automáticos, 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. Durante a execução do servidor da Web de desenvolvimento, os métodos que geram URLs de login e logout 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 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 a localhost como a hostname. O padrão é localhost.

--default_gcs_bucket=...

Define o nome de intervalo 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 usada com o servidor. O padrão é 8080.

--sdk_root=...

Um caminho para o SDK do Cloud, se diferente do local da ferramenta.

--server=...

O servidor a ser usado para determinar a versão mais recente do SDK.

Esta página foi útil? Conte sua opinião sobre:

Enviar comentários sobre…

Ambiente padrão do App Engine para Java 8