ID regione
REGION_ID
è un codice abbreviato assegnato da Google in base all'area geografica selezionata al momento della creazione dell'app. Il codice non corrisponde a un paese o a una provincia, anche se alcuni ID regione possono sembrare simili ai codici paese e provincia di uso comune. Per le app create dopo febbraio 2020, REGION_ID.r
è incluso negli URL di App Engine. Per le app esistenti create prima di questa data, l'ID regione è facoltativo nell'URL.
Scopri di più sugli ID regione.
Oltre al descrittore di deployment web.xml
, le applicazioni Java di App Engine utilizzano un file di configurazione denominato appengine-web.xml
per specificare informazioni sull'app e identificare quali file all'interno del file WAR
dell'app sono file statici (come immagini) e quali file di risorse utilizzati dall'applicazione.
Esempio
L'esempio seguente è un file minimo che specifica il runtime Java 8 senza file statici o file di risorse:
<?xml version="1.0" encoding="utf-8"?>
<appengine-web-app xmlns="http://appengine.google.com/ns/1.0">
<threadsafe>true</threadsafe>
<runtime>java8</runtime>
</appengine-web-app>
Sintassi
Un'app Java di App Engine deve avere un file denominato appengine-web.xml
nella relativa
WAR, nella directory WEB-INF/
. Questo è un file XML il cui elemento principale è <appengine-web-app>
.
Puoi trovare la definizione del tipo di documento e le specifiche dello schema per appengine-web.xml
nella directory docs/
dell'SDK.
Elemento | Descrizione |
---|---|
<async-session-persistence> |
Facoltativo. È possibile ridurre la latenza delle richieste configurando la tua applicazione per la scrittura asincrona dei dati delle sessioni HTTP nel datastore: <?xml version="1.0" encoding="utf-8"?> <appengine-web-app xmlns="http://appengine.google.com/ns/1.0"> <!-- ... --> <async-session-persistence enabled="true" /> <!-- ... --> </appengine-web-app> Quando la persistenza della sessione asincrona è attivata, App Engine invia un'attività della coda di attività per scrivere i dati della sessione nel datastore prima di scriverli in memcache. Per impostazione predefinita, l'attività verrà inviata alla coda "predefinita". Se vuoi utilizzare una coda diversa, aggiungi l'attributo "queue-name": <?xml version="1.0" encoding="utf-8"?> <appengine-web-app xmlns="http://appengine.google.com/ns/1.0"> <!-- ... --> <async-session-persistence enabled="true" queue-name="myqueue"/> <!-- ... --> </appengine-web-app> I dati della sessione sono sempre scritti in modo sincrono in memcache. Se una richiesta tenta di leggere i dati della sessione quando memcache non è disponibile (o i dati della sessione sono stati svuotati), verrà eseguito il failover su Datastore, che potrebbe non disporre ancora dei dati della sessione più recenti. Ciò significa che la persistenza della sessione asincrona può causare la visualizzazione da parte dell'applicazione dei dati di sessione inattivi. Tuttavia, per la maggior parte delle applicazioni, il vantaggio della latenza supera di gran lunga il rischio. |
<auto-id-policy> |
Facoltativo. Se
imposti automaticamente gli identificatori di entità, puoi modificare il metodo utilizzato impostando il criterio ID automatico. Di seguito sono riportate le opzioni valide:
|
<automatic-scaling> |
Facoltativo. Per una spiegazione completa, consulta la sezione relativa alla scalabilità automatica. |
<basic-scaling> |
Facoltativo. Per una spiegazione completa, consulta la sezione relativa alla scalabilità di base. |
<env-variables> |
Facoltativo.
Il file <env-variables> <env-var name="DEFAULT_ENCODING" value="UTF-8" /> </env-variables> Per evitare conflitti con l'ambiente locale, il server di sviluppo non imposta le variabili di ambiente basate su questo file e richiede che queste variabili siano già impostate nell'ambiente locale sui valori corrispondenti. export DEFAULT_ENCODING="UTF-8" dev_appserver war Al momento del deployment in App Engine, l'ambiente viene creato con queste variabili già impostate. |
<inbound-services> |
Facoltativo.
Prima che un'applicazione possa ricevere email, è necessario che sia configurata per abilitare il servizio.
Puoi abilitare il servizio per un'app Java 8 includendo una
sezione È disponibile il seguente servizio in entrata:
|
<instance-class> |
Facoltativo. La dimensione della classe di istanza per questo modulo. Quando specifichi diverse opzioni di scalabilità, sono disponibili le seguenti classi di istanza:
|
<manual-scaling> |
Facoltativo. Per una spiegazione completa, consulta la sezione relativa alla scalabilità manuale. |
<precompilation-enabled> |
Facoltativo. App Engine utilizza un processo di "precompilazione" con il bytecode Java di un'app per migliorare le prestazioni dell'app nell'ambiente di runtime Java. Il codice precompilato funziona in modo identico al bytecode originale.
Se per qualche motivo preferisci che la tua app non utilizzi la precompilazione,
puoi disattivarla aggiungendo quanto segue al
file <?xml version="1.0" encoding="utf-8"?> <appengine-web-app xmlns="http://appengine.google.com/ns/1.0"> <!-- ... --> <precompilation-enabled>false</precompilation-enabled> <!-- ... --> </appengine-web-app> |
module |
Nota: i moduli sono ora denominati
Servizi,
mentre i servizi vengono ancora dichiarati nei file Obbligatorio se stai creando un servizio. Facoltativo per il servizio predefinito. Ogni servizio e ogni versione devono avere un nome. Un nome può contenere numeri, lettere e trattini. Non può superare i 63 caratteri, iniziare o terminare con un trattino e contenere la stringa "-dot". Scegli un nome univoco per ogni servizio e ogni versione. Non riutilizzare i nomi tra servizi e versioni. Vedi anche service. |
<public-root> |
Facoltativo.
Il valore predefinito di
Ad esempio, quanto segue mappa il percorso dell'URL <?xml version="1.0" encoding="utf-8"?> <appengine-web-app xmlns="http://appengine.google.com/ns/1.0"> <!-- ... --> <public-root>/static</public-root> <!-- ... --> </appengine-web-app> |
<resource-files> |
Facoltativo. I file elencati nell'elemento
L'elemento
I file di risorse App Engine vengono letti utilizzando |
runtime |
Per utilizzare il runtime Java 8, devi specificare questa voce con il valore Esempio: <?xml version="1.0" encoding="utf-8"?> <appengine-web-app xmlns="http://appengine.google.com/ns/1.0"> <!-- ... --> <runtime>java8</runtime> <!-- ... --> </appengine-web-app> |
service |
I servizi in precedenza erano noti come moduli. Attualmente, la definizione di un servizio come |
service-account |
Facoltativo. L'elemento <?xml version="1.0" encoding="utf-8"?> <appengine-web-app xmlns="http://appengine.google.com/ns/1.0"> <!-- ... --> <service-account>[SERVICE_ACCOUNT_NAME]@[PROJECT_ID].iam.gserviceaccount.com</service-account> <!-- ... --> </appengine-web-app> |
<sessions-enabled> |
Facoltativo. App Engine include un'implementazione di sessioni, utilizzando l'interfaccia di sessione Servit. L'implementazione archivia i dati di sessione in Datastore per la persistenza e utilizza memcache per la velocità. Come per la maggior parte degli altri container servlet, gli attributi di sessione impostati con "session.setAttribute()" durante la richiesta vengono mantenuti alla fine di quest'ultima.
Questa funzionalità è disattivata per impostazione predefinita. Per attivarlo, aggiungi quanto segue a
<?xml version="1.0" encoding="utf-8"?> <appengine-web-app xmlns="http://appengine.google.com/ns/1.0"> <!-- ... --> <sessions-enabled>true</sessions-enabled> <!-- ... --> </appengine-web-app>
L'implementazione crea entità Datastore del tipo
Nota: poiché App Engine archivia i dati di sessione in Datastore e memcache, tutti i valori archiviati nella sessione devono implementare l'interfaccia
Vedi l'elemento
|
<ssl-enabled> |
Facoltativo. Per impostazione predefinita, qualsiasi utente può accedere a qualsiasi URL tramite HTTP o HTTPS. Puoi configurare un'app in modo che richieda HTTPS per determinati URL nel descrittore di deployment. Consulta la pagina relativa al descrittore del deployment: URL protetti.
Se vuoi impedire l'utilizzo di HTTPS per l'applicazione, inserisci quanto segue nel file <?xml version="1.0" encoding="utf-8"?> <appengine-web-app xmlns="http://appengine.google.com/ns/1.0"> <!-- ... --> <ssl-enabled>false</ssl-enabled> <!-- ... --> </appengine-web-app> Non esiste un modo per non consentire HTTPS per alcuni percorsi URL e non per altri nell'ambiente di runtime Java. |
<static-error-handlers> |
Facoltativo.
Quando si verificano determinati errori, App Engine pubblica una pagina di errore generica. Puoi configurare la tua app in modo che pubblichi un file statico personalizzato al posto di queste pagine di errore generiche, a condizione che i dati di errore personalizzati siano inferiori a 10 kilobyte. Puoi configurare diversi file statici da pubblicare per ogni codice di errore supportato specificando i file nel file <static-error-handlers> <handler file="default_error.html" /> <handler file="over_quota.html" error-code="over_quota" /> </static-error-handlers> Avviso: assicurati che il percorso del file di risposta all'errore non si sovrapponga ai percorsi dei gestori di file statici.
Ogni voce
Facoltativamente, puoi specificare un |
<static-files> |
Facoltativo.
L'elemento
L'elemento
<static-files> <include path="/my_static-files" > <http-header name="Access-Control-Allow-Origin" value="http://example.org" /> </include> </static-files> |
<system-properties> |
Facoltativo. Il file <system-properties> <property name="myapp.maximum-message-length" value="140" /> <property name="myapp.notify-every-n-signups" value="1000" /> <property name="myapp.notify-url" value="http://www.example.com/signupnotify" /> </system-properties> <env-variables> <env-var name="DEFAULT_ENCODING" value="UTF-8" /> </env-variables> |
<threadsafe> |
Obbligatorio.
Quando l'elemento <?xml version="1.0" encoding="utf-8"?> <appengine-web-app xmlns="http://appengine.google.com/ns/1.0"> <!-- ... --> <threadsafe>true</threadsafe> <!-- ... --> </appengine-web-app>
Se vuoi utilizzare richieste in parallelo, il codice dell'applicazione deve utilizzare la sincronizzazione dei thread appropriata prima di abilitare Questo elemento non è supportato nei runtime Java 11 e versioni successive. |
<url-stream-handler> |
Facoltativo. Valori possibili: Il valore predefinito è Se imposti <?xml version="1.0" encoding="utf-8"?> <appengine-web-app xmlns="http://appengine.google.com/ns/1.0"> <!-- ... --> <url-stream-handler>urlfetch</url-stream-handler> <!-- ... --> </appengine-web-app> |
<version> |
L'elemento
I nomi di versione devono iniziare con una lettera per distinguerli dalle istanze numeriche sempre specificate da un numero. Ciò consente di evitare
l'ambiguità con URL come
App Engine utilizza questo identificatore di versione per determinare se creare una nuova versione dell'app con l'identificatore specificato (oppure sostituire la versione dell'app con l'identificatore specificato, se ne esiste già una). Puoi testare le nuove versioni della tua app con un URL utilizzando "-dot-" come separatore di sottodominio nell'URL, ad esempio
|
<warmup-requests-enabled> |
Facoltativo. Valore predefinito: true. Le richieste di warmup sono abilitate per impostazione predefinita per le applicazioni Java 8.
Con le richieste di warmup abilitate, l'infrastruttura di App Engine invia richieste "GET" a
Per disabilitare le richieste di warmup, specifica <?xml version="1.0" encoding="utf-8"?> <appengine-web-app xmlns="http://appengine.google.com/ns/1.0"> <!-- ... --> <warmup-requests-enabled>false</warmup-requests-enabled> <!-- ... --> </appengine-web-app> |
<vpc-access-connector> |
Facoltativo. Configura la tua applicazione in modo che utilizzi un connettore di accesso VPC serverless, consentendo all'applicazione di inviare richieste alle risorse interne nella tua rete VPC. Per maggiori informazioni, consulta Connessione a una rete VPC.
<vpc-access-connector> <name>projects/PROJECT_ID/locations/REGION/connectors/CONNECTOR_NAME</name> <egress-setting>all-traffic</egress-setting> </vpc-access-connector> |
Ridimensionare gli elementi
La tabella seguente elenca le opzioni per definire come specificare la scalabilità dell'applicazione.
Per un confronto delle funzionalità relative alle prestazioni dei tipi di scalabilità, consulta Scalabilità delle istanze dinamiche.
Elemento | Descrizione |
---|---|
<automatic-scaling> |
Facoltativo. Se non diversamente specificato, la scalabilità automatica si presume per impostazione predefinita con una classe di istanza predefinita
L'elemento Questo elemento può contenere i seguenti elementi:
<appengine-web-app xmlns="http://appengine.google.com/ns/1.0"> <application>simple-app</application> <module>default</module> <version>uno</version> <threadsafe>true</threadsafe> <instance-class>F2</instance-class> <automatic-scaling> <target-cpu-utilization>0.65</target-cpu-utilization> <min-instances>5</min-instances> <max-instances>100</max-instances> <max-concurrent-requests>50</max-concurrent-requests> </automatic-scaling> </appengine-web-app> |
<basic-scaling> |
Facoltativo.
L'elemento Questo elemento può contenere i seguenti elementi:
<appengine-web-app xmlns="http://appengine.google.com/ns/1.0"> <application>simple-app</application> <module>default</module> <version>uno</version> <threadsafe>true</threadsafe> <instance-class>B8</instance-class> <basic-scaling> <max-instances>11</max-instances> <idle-timeout>10m</idle-timeout> </basic-scaling> </appengine-web-app> |
<manual-scaling> |
Facoltativo.
L'elemento Questo elemento può contenere i seguenti elementi:
<appengine-web-app xmlns="http://appengine.google.com/ns/1.0"> <application>simple-app</application> <module>default</module> <version>uno</version> <threadsafe>true</threadsafe> <instance-class>B8</instance-class> <manual-scaling> <instances>5</instances> </manual-scaling> </appengine-web-app> |
Gestione temporanea degli elementi
Gran parte del lavoro svolto durante un deployment avviene localmente in una fase di preparazione chiamata gestione temporanea, in cui vengono assemblati i file JAR, vengono compilati i JSP e così via. Facoltativamente, puoi configurare determinate parti del comportamento di gestione temporanea utilizzando elementi nel file di configurazione dell'applicazione. Il deployment della maggior parte delle applicazioni viene eseguito correttamente senza configurare manualmente il comportamento della gestione temporanea. Se non viene eseguito il deployment dell'app, potresti dover configurare la gestione temporanea utilizzando le opzioni mostrate di seguito.
Elemento | Descrizione |
---|---|
<staging> |
Facoltativo. Per la maggior parte delle applicazioni non è necessario modificare il comportamento predefinito. L'elemento di gestione temporanea consente di specificare una particolare configurazione temporanea, se necessario per il deployment. Questo elemento può contenere i seguenti elementi:
Ad esempio: <staging> <delete-jsps>false</delete-jsps> </staging> |
Valore predefinito dell'opzione temporanea
I valori predefiniti per le opzioni temporanee sono i seguenti:
Elemento temporaneo | Valore predefinito |
---|---|
enable-jar-splitting |
true |
jar-splitting-excludes |
NA |
disable-jar-jsps |
false |
enable-jar-classes |
true . Questa operazione può influire sull'ordine di caricamento della classe, quindi se la tua app dipende da un determinato ordine, imposta questo valore su false . |
delete-jsps |
true |
compile-encoding |
utf-8 |
Includi ed escludi la sintassi
I pattern del percorso vengono specificati utilizzando zero o più elementi <include>
e <exclude>
. In un pattern, '*'
rappresenta zero o più
caratteri nel nome di un file o di una directory, mentre **
rappresenta zero o più
directory in un percorso. I file e le directory che corrispondono ai pattern <exclude>
non verranno caricati quando esegui il deployment dell'app in App Engine. Tuttavia, questi file e directory saranno ancora accessibili all'applicazione se viene eseguita sul server di sviluppo locale.
Un elemento <include>
sostituisce il comportamento predefinito di inclusione di tutti i file. Un elemento <exclude>
si applica dopo tutti i pattern <include>
(nonché il valore predefinito se non viene fornito alcun elemento <include>
esplicito).
L'esempio seguente mostra come designare tutti i file .png
come file statici (tranne quelli nella directory data/
e in tutte le relative sottodirectory):
<static-files>
<include path="/**.png" />
<exclude path="/data/**.png" />
</static-files>
Puoi inoltre impostare le intestazioni HTTP da utilizzare quando rispondi alle richieste a queste risorse statiche.
<static-files>
<include path="/my_static-files" >
<http-header name="Access-Control-Allow-Origin"
value="http://example.org" />
</include>
</static-files>
Tipi MIME per i file statici
Per impostazione predefinita, i file statici vengono pubblicati utilizzando un tipo MIME selezionato in base all'estensione del nome file. Puoi associare tipi MIME personalizzati a estensioni di nomi file per i file statici utilizzando gli elementi <mime-mapping>
in web.xml
.
Timeout URLFetch
Puoi impostare una scadenza per ogni richiesta URLFetch. Per impostazione predefinita, la scadenza per un recupero è di 5 secondi.
Puoi modificare questa impostazione predefinita includendo la seguente impostazione nel file di configurazione di appengine-web.xml
. Specifica il timeout in secondi:
<system-properties>
<property name="appengine.api.urlfetch.defaultDeadline" value="10"/>
</system-properties>