L'interfaccia a riga di comando Google Cloud 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 relativi servizi, incluso Datastore.
Eseguire il server web di sviluppo
Per informazioni su come impostare le proprietà di sistema e le variabili di ambiente per la tua app, consulta 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 del comando Windows:
google-cloud-sdk\bin\java_dev_appserver.cmd [options] [WAR_DIRECTORY_LOCATION]
Sintassi del comando per Linux o macOS:
google-cloud-sdk/bin/java_dev_appserver.sh [options] [WAR_DIRECTORY_LOCATION]
Il comando prende la posizione della directory WAR dell'applicazione come argomento.
Arrestare il server di sviluppo
Per arrestare il server web, premi Ctrl-C.
Rilevamento dell'ambiente di runtime dell'applicazione
Per determinare se il codice viene eseguito in produzione o nel 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 basato su file locale sul tuo computer. Il Datastore si chiama local_db.bin
e viene creato nella directory WAR dell'applicazione, nella directory WEB-INF /appengine-generated/
. Non viene caricato con la tua
richiesta.
Questo Datastore persiste tra le invocazioni del server web, pertanto i dati archiviati saranno ancora disponibili al successivo avvio del server web. Per cancellare i contenuti del Datastore, arresta il server ed elimina questo file.
Come descritto in Configurazione degli indici Datastore, il server di sviluppo può generare la configurazione degli indici Datastore necessari per la tua applicazione, in base alle query eseguite durante il test. Viene generato un file denominato datastore-indexes-auto.xml
nella directory WEB-INF/appengine-generated/
nel file 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 Datastore locale utilizzando il server web di sviluppo:
- Avvia il server di sviluppo come descritto in precedenza.
- Vai alla console per lo sviluppo.
- Fai clic su Visualizzatore del data store nel riquadro di navigazione a sinistra per visualizzare i contenuti Datastore locale.
Il modello di coerenza di Cloud Datastore
Per impostazione predefinita, il Datastore locale è configurato in modo che la percentuale di scrittura nel Datastore non immediatamente visibile 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 la tua 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 impostarla:
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
è
tra 0 e 100. Se utilizzi numeri esterni a questo intervallo, riceverai un messaggio di errore.
Specifica del criterio di allocazione degli ID automatici
Puoi configurare il modo in cui Datastore locale assegna ID entità automatici.
Nel server di sviluppo sono supportati i seguenti criteri di allocazione automatica degli ID:
sequential
- Gli ID vengono assegnati dalla sequenza di numeri interi consecutivi.
scattered
- Gli ID vengono assegnati da una sequenza non ripetuta di interi distribuiti in modo approssimativamente 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 degli account utente
Il server web di sviluppo simula gli Account Google con le proprie pagine di accesso e logout. Durante l'esecuzione nel 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. La sessione utilizza l'indirizzo email che inserisci come utente attivo.
Per fare in modo che l'applicazione pensi che l'utente che ha eseguito l'accesso sia un amministratore, seleziona la casella di controllo "Accedi come amministratore" nel modulo.
Utilizzare il recupero 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. Il comportamento può essere diverso da quello che si verifica quando l'applicazione viene eseguita su App Engine se utilizzi un server proxy per accedere ai siti web.
La console di sviluppo
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
Per le opzioni del comando del server di sviluppo locale, consulta questa pagina.