Google Cloud CLI per Java include un server di sviluppo locale per testare l'applicazione sul computer. Il server di sviluppo locale emula l'ambiente di runtime Java di App Engine e tutti i suoi servizi, incluso Datastore.
Esecuzione del server web di sviluppo
Per informazioni sull'impostazione delle proprietà di sistema e delle variabili di ambiente per l'app, vedi Come vengono gestite le richieste.
Puoi anche eseguire il server web di sviluppo da un prompt dei comandi. Il comando da eseguire si trova nella directory google-cloud-sdk/bin/
dell'SDK.
Sintassi dei comandi di Windows:
google-cloud-sdk\bin\java_dev_appserver.cmd [options] [WAR_DIRECTORY_LOCATION]
Sintassi dei comandi di Linux o macOS:
google-cloud-sdk/bin/java_dev_appserver.sh [options] [WAR_DIRECTORY_LOCATION]
Il comando utilizza la posizione della directory WAR della tua applicazione come argomento.
Arresto del server di sviluppo in corso...
Per arrestare il server web, premi Ctrl-C.
Rilevamento dell'ambiente di runtime dell'applicazione
Per determinare se il tuo 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
}
Utilizzare l'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
, ed è
creato nella directory WAR della tua applicazione, nella
WEB-INF /appengine-generated/
directory. Non viene caricato insieme alla tua applicazione.
Questo Datastore persiste tra le chiamate al server web, pertanto i dati archiviati saranno ancora disponibili alla successiva esecuzione del server web. Per cancellare i contenuti di Datastore, arresta il server e elimina il file.
Come descritto in Configurazione dell'indice del datastore, il server di sviluppo può generare la configurazione per gli indici Datastore richiesti dall'applicazione, determinata dalle query che esegue durante il test. Questo genera un file denominato datastore-indexes-auto.xml
nella directory WEB-INF/appengine-generated/
nel 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>
.
Navigazione in Datastore nel server di sviluppo
Per navigare nel datastore locale utilizzando il server web di sviluppo:
- Avvia il server di sviluppo come descritto in precedenza.
- Vai alla Console di sviluppo.
- Fai clic su Visualizzatore Datastore nel riquadro di navigazione a sinistra per visualizzare i contenuti del datastore locale.
Il modello di coerenza Cloud Datastore
Per impostazione predefinita, il datastore locale è configurato in modo che la percentuale di scritture di Datastore che non siano immediatamente visibili nelle query globali impostate al 10%.
Per modificare questo livello di coerenza, imposta la proprietà di sistema datastore.default_high_rep_job_policy_unapplied_job_pct
con un valore corrispondente all'entità della coerenza finale che vuoi mostrare all'applicazione.
-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_cloud_sdk/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, riceverai un errore.
Specifica il criterio di allocazione automatica degli ID
Puoi configurare il modo in cui il datastore locale assegna gli ID entità automatici (tieni presente che queste informazioni si applicano al runtime Java 11 e al runtime Java 8).
Nel server di sviluppo sono supportati i seguenti criteri di allocazione automatica:
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 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 gli Account Google con le proprie pagine di accesso e di disconnessione. Durante l'esecuzione sotto il server web di sviluppo, i metodi che generano gli URL di accesso e di 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. Nella sessione viene utilizzato l'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" del modulo.
Utilizzo del recupero dell'URL
Quando la tua applicazione utilizza l'API URL Fetch per effettuare una richiesta HTTP, il server web di sviluppo effettua la richiesta direttamente dal tuo computer. Il comportamento può variare rispetto a quando l'applicazione viene eseguita su App Engine se utilizzi un server proxy per l'accesso ai siti web.
Console di sviluppo
Il server web di sviluppo include un'applicazione web della console. La console ti consente di sfogliare il datastore locale.
Per accedere alla console, visita l'URL /_ah/admin
sul 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 impostare questo codice per poter accedere al server di sviluppo da un altro computer sulla rete. Un indirizzo
0.0.0.0
consente sia l'accesso localhost sia l'accesso a nome host. Valore predefinito:localhost
. --default_gcs_bucket=...
-
Imposta il nome predefinito del bucket Google Cloud Storage.
--disable_update_check
-
Se specificato, 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 stampa 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 dell'interfaccia a riga di comando gcloud, se diverso dalla località dello strumento.
--server=...
-
Il server da utilizzare per determinare la versione più recente dell'SDK.