Utilizzo del server di sviluppo locale

Il server di sviluppo locale emula l'ambiente di runtime Java di App Engine e tutti i suoi servizi, incluso Datastore.

Prima di iniziare

Poiché Java 8 ha raggiunto la fine del supporto, non puoi più utilizzare l'ultima versione di dev_appserver.py per eseguire localmente le tue applicazioni. Per scaricare una versione archiviata di devapp_server.py, procedi nel seguente modo:

  1. Dall'archivio, scarica la cartella compressa che contiene il server dev_appserver.py per i runtime che hanno raggiunto la fine del supporto.

  2. Estrai i contenuti della directory nel tuo file system locale, ad esempio nella directory /home. Puoi trovare dev_appserver.py nella directory google_appengine/google/appengine/tools/java/bin.

Esecuzione del server web di sviluppo

Per informazioni sull'impostazione delle proprietà di sistema e delle variabili di ambiente per la tua app, consulta Come vengono gestite le richieste.

Puoi anche eseguire il server web di sviluppo dal prompt dei comandi. Il comando da eseguire si trova nella directory dell'SDK con il percorso relativo google_appengine/google/appengine/tools/java/bin.

Sintassi dei comandi Windows:

google_appengine\google\appengine\tools\java\bin\java_dev_appserver.cmd [options] [WAR_DIRECTORY_LOCATION]

Sintassi dei comandi Linux o macOS:

google_appengine/google/appengine/tools/java/bin/java_dev_appserver.sh [options] [WAR_DIRECTORY_LOCATION]

Il comando prende la posizione della directory WAR dell'applicazione come argomento.

Arresto del server di sviluppo

Per arrestare il server web, premi Ctrl-C.

Rilevamento dell'ambiente di runtime dell'applicazione

Per determinare se il codice è in esecuzione in produzione o sul server di sviluppo locale, puoi controllare il valore del metodo SystemProperty.environment.value(). Ad esempio:

if (SystemProperty.environment.value() == SystemProperty.Environment.Value.Production) {
   // Production
 } else {
  // Local development server
  // which is: SystemProperty.Environment.Value.Development
}

Utilizzo dell'emulatore Datastore locale

Il server web di sviluppo simula Datastore utilizzando un datastore locale basato su file sul tuo computer. Il datastore è denominato local_db.bin e viene creato nella directory WAR dell'applicazione, nella directory WEB-INF /appengine-generated/. Non viene caricato con la tua applicazione.

Datastore persiste tra una chiamata al server web, quindi i dati archiviati saranno ancora disponibili all'esecuzione successiva del server web. Per cancellare i contenuti di Datastore, arresta il server ed elimina questo file.

Come descritto nella sezione Configurazione indice Datastore, il server di sviluppo può generare la configurazione per gli indici Datastore necessari all'applicazione, in base alle query eseguite durante il test. Questo genera un file denominato datastore-indexes-auto.xml nella directory WEB-INF/appengine-generated/ della WAR. Per disattivare la configurazione automatica dell'indice, crea o modifica il file datastore-indexes.xml nella directory WEB-INF/ utilizzando l'attributo autoGenerate="false" per l'elemento <datastore-indexes>.

Esplorazione di Datastore nel server di sviluppo

Per sfogliare il datastore locale utilizzando il server web di sviluppo:

  1. Avvia il server di sviluppo come descritto in precedenza.
  2. Vai alla Console di sviluppo.
  3. Fai clic su Visualizzatore Datastore nel riquadro di navigazione a sinistra per visualizzare i contenuti di Datastore locali.

Il modello di coerenza Datastore

Per impostazione predefinita, il datastore locale è configurato in modo che la percentuale di scritture di Datastore non immediatamente visibili nelle query globali sia impostata sul 10%.

Per regolare questo livello di coerenza, imposta la proprietà di sistema datastore.default_high_rep_job_policy_unapplied_job_pct con un valore corrispondente alla quantità di coerenza finale che vuoi che l'applicazione visualizzi.

-Ddatastore.default_high_rep_job_policy_unapplied_job_pct=20

Se imposti questa proprietà utilizzando il prompt dei comandi java_dev_appserver.sh, devi utilizzare --jvm_flag=... per impostare la proprietà:

google_appengine/google/appengine/tools/java/bin/java-dev_appserver.sh  --jvm_flag=-Ddatastore.default_high_rep_job_policy_unapplied_job_pct=20

L'intervallo valido per datastore.default_high_rep_job_policy_unapplied_job_pct è compreso tra 0 e 100. Se utilizzi numeri al di fuori di questo intervallo, verrà visualizzato un errore.

Specifica del criterio di allocazione automatica degli ID

Puoi configurare il modo in cui il datastore locale assegna gli ID entità automatici.

I seguenti criteri di allocazione automatica degli ID sono supportati nel server di sviluppo:

sequential
Gli ID vengono assegnati dalla sequenza di numeri interi consecutivi.
scattered
Gli ID vengono assegnati da una sequenza non ripetuta di numeri interi distribuiti approssimativamente in modo uniforme.

Il criterio predefinito nel datastore locale è scattered.

Per specificare il criterio ID automatico, imposta la proprietà di sistema datastore.auto_id_allocation_policy su sequential o scattered.

-Ddatastore.auto_id_allocation_policy=scattered

Per impostare questa proprietà di sistema tramite un flag passato alla macro dev_appserver:

java_dev_appserver --jvm_flag=-Ddatastore.auto_id_allocation_policy=scattered

Simulazione di account utente

Il server web di sviluppo simula Account Google con le proprie pagine di accesso e uscita. Durante l'esecuzione nel server web di sviluppo, i metodi che generano URL di accesso e uscita restituiscono gli URL per /_ah/login e /_ah/logout sul server locale.

La pagina di accesso per lo sviluppo include un modulo in cui puoi inserire un indirizzo email. La sessione utilizza qualsiasi indirizzo email inserito come utente attivo.

Per fare in modo che l'applicazione ritenga che l'utente che ha eseguito l'accesso sia un amministratore, seleziona la casella di controllo "Accedi come amministratore" nel modulo.

Utilizzo del recupero degli URL

Quando l'applicazione utilizza l'API URL Fetch per effettuare una richiesta HTTP, il server web di sviluppo effettua la richiesta direttamente dal computer. Se utilizzi un server proxy per accedere ai siti web, il comportamento può essere diverso da quello in cui l'applicazione viene eseguita su App Engine.

La Development Console

Il server web di sviluppo include un'applicazione web della console. Con la console puoi sfogliare il datastore locale.

Per accedere alla console, visita l'URL /_ah/admin sul tuo server: http://localhost:8080/_ah/admin

Argomenti della riga di comando

Il comando del server di sviluppo supporta i seguenti argomenti della riga di comando:

--address=...

L'indirizzo host da utilizzare per il server. Potrebbe essere necessario impostarlo per accedere al server di sviluppo da un altro computer sulla rete. Un indirizzo 0.0.0.0 consente sia l'accesso localhost che l'accesso al nome host. Valore predefinito: localhost.

--default_gcs_bucket=...

Imposta il nome predefinito del bucket Google Cloud Storage.

--disable_update_check

Se fornito, il server di sviluppo non contatterà App Engine per verificare la disponibilità di una nuova release dell'SDK. Per impostazione predefinita, il server verifica la presenza di una nuova versione all'avvio e visualizza un messaggio se è disponibile una nuova versione.

--generated_dir=...

Imposta la directory in cui vengono creati i file generati.

--help

Stampa un messaggio utile, quindi si chiude.

--jvm_flag=...

Passa il flag specificato come argomento JVM. Può essere ripetuto per fornire più flag.

--port=...

Il numero di porta da utilizzare per il server. Il valore predefinito è 8080.

--sdk_root=...

Un percorso a gcloud CLI, se diverso dalla posizione dello strumento.

--server=...

Il server da utilizzare per determinare la versione più recente dell'SDK.