ID regione
REGION_ID
è un codice abbreviato assegnato da Google in base alla regione selezionata quando crei l'app. Il codice non corrisponde a un paese o a una provincia, anche se alcuni ID regione possono sembrare simili ai codici di paesi e province di uso comune. Per le app create dopo il giorno
Febbraio 2020, REGION_ID.r
è incluso in
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 sulla tua app e identificare quali file nel file WAR
dell'app sono file statici (come le immagini) e quali sono i file di risorse utilizzati dall'applicazione.
Esempio
L'esempio seguente è un file minimo che specifica il comando Java 8 senza file statici o 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 App Engine deve avere un file denominato appengine-web.xml
nel suo file WAR, nella directory WEB-INF/
. Si tratta di 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 per scrivere in modo asincrono i dati di sessione HTTP 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> Se la persistenza della sessione asincrona è attiva, App Engine invierà 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 vengono sempre scritti in modo sincrono in memcache. Se prova a leggere i dati della sessione quando memcache non è disponibile (o i dati della sessione sono stati cancellati), il failover in Datastore, che potrebbero non disporre ancora dei dati più recenti. Ciò significa che la persistenza della sessione asincrona può causare la visualizzazione di dati устаревших della sessione da parte della tua applicazione. 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 delle entità, puoi modificare il metodo impiegato impostando il criterio di ID automatico. Di seguito sono riportate le opzioni valide:
|
<automatic-scaling> |
Facoltativo. Per una spiegazione completa, consulta la sezione sulla scalabilità automatica . |
<basic-scaling> |
Facoltativo. Per una spiegazione completa, consulta la sezione sulla 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 in base a questo file e richiede che nell'ambiente locale queste variabili siano già impostate su valori corrispondenti. export DEFAULT_ENCODING="UTF-8" dev_appserver war Quando viene eseguito il deployment in App Engine, l'ambiente viene creato sono già impostate. |
<inbound-services> |
Facoltativo.
Prima che un'applicazione possa ricevere email,
l'applicazione deve essere 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 istanze per questo modulo. Le seguenti classi di istanze sono disponibili quando specifichi opzioni di scalabilità diverse:
|
<manual-scaling> |
Facoltativo. Per una spiegazione completa, consulta la sezione Scalabilità manuale. |
<precompilation-enabled> |
Facoltativo. App Engine utilizza una "precompilazione" con il bytecode Java un'app per migliorare le prestazioni dell'app nel runtime Java completamente gestito di Google Cloud. 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
<?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: ora i moduli si chiamano
Servizi
e i servizi sono ancora dichiarati nei file Obbligatorio se si crea un servizio. Facoltativo per il servizio predefinito. Ogni servizio e ogni versione deve avere un nome. Un nome può contenere numeri, lettere e trattini. Non può essere più lungo di 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, il seguente 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 di 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 erano precedentemente noti come moduli. Al momento, 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 delle sessioni utilizzando l'interfaccia di sessione del servlet. L'implementazione archivia i dati di sessione in Datastore per persistenza e usa anche memcache per migliorare la velocità. Come con la maggior parte degli altri servlet container, gli attributi di sessione impostati con "session.setAttribute()" durante la richiesta sono mantenuti al termine della richiesta.
Questa funzionalità è disattivata per impostazione predefinita. Per attivarla, 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 di tipo
Nota: poiché App Engine archivia i dati di sessione
Datastore e memcache, tutti i valori archiviati nella sessione devono
implementare l'interfaccia
Consulta 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 Deployment Descrittore: URL protetti.
Se vuoi non consentire 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 è possibile 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 restituisce un errore generico
. Puoi configurare l'app in modo che pubblichi un file statico personalizzato
di queste pagine di errore generiche, purché i dati di errore personalizzati siano inferiori
di oltre 10 kilobyte. Puoi configurare diversi file statici da pubblicare
di ciascun codice di errore supportato specificando i file nella
<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 dell'errore il file di risposta non si sovrappone ai percorsi dei gestori di file statici.
Ogni voce
Il campo
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 una sincronizzazione dei thread corretta 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 delle versioni devono iniziare con una lettera per distinguerli dalle istanze numeriche, che sono sempre specificate da un numero. In questo modo viene evitata
l'ambiguità con URL come
App Engine utilizza questo identificatore di versione per determinare se
per creare una nuova versione dell'app con l'identificatore specificato (o
sostituire la versione dell'app con l'identificatore specificato, se disponibile
esiste già). Puoi testare nuove versioni della tua app con un URL
utilizzando "-punto-" 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 riscaldamento 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 l'applicazione in modo che utilizzi un connettore di accesso VPC serverless, in modo che possa inviare richieste alle risorse interne della rete VPC. Per ulteriori 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 caratteristiche prestazionali dei tipi di scalabilità, consulta Scalabilità delle istanze dinamiche.
Elemento | Descrizione |
---|---|
<automatic-scaling> |
Facoltativo. Per impostazione predefinita, viene applicata la scalabilità automatica con una classe di istanza predefinita di
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> |
Elementi di gestione temporanea
Gran parte del lavoro svolto durante un deployment avviene localmente in una fase di preparazione chiamati staging, dove vengono assemblati i file JAR, compilati JSP e così via. Se vuoi, puoi configurare alcune parti del comportamento di staging utilizzando gli elementi di staging nel file di configurazione dell'applicazione. La maggior parte delle applicazioni verrà implementata correttamente senza dover configurare manualmente il comportamento di staging. Se l'app non viene dispiata, potrebbe essere necessario configurare lo staging 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 staging consente di specificare una determinata configurazione di staging se necessaria per il deployment. Questo elemento può contenere i seguenti elementi:
Ad esempio: <staging> <delete-jsps>false</delete-jsps> </staging> |
Valori predefiniti delle opzioni di gestione temporanea
I valori predefiniti per le opzioni di gestione temporanea sono i seguenti:
Elemento temporaneo | Valore predefinito |
---|---|
enable-jar-splitting |
true |
jar-splitting-excludes |
NA |
disable-jar-jsps |
false |
enable-jar-classes |
true . Questo può influire sull'ordine di caricamento delle classi, quindi se la tua app dipende da un determinato ordine, imposta questo valore su false . |
delete-jsps |
true |
compile-encoding |
utf-8 |
Sintassi di inclusione ed esclusione
I pattern di percorso vengono specificati utilizzando zero o più <include>
e
Elementi <exclude>
. In un pattern, '*'
rappresenta zero o più caratteri di qualsiasi tipo nel nome di un file o di una directory e **
rappresenta zero o più directory in un percorso. File e directory corrispondenti a <exclude>
i pattern non verranno caricati quando esegui il deployment dell'app in App Engine. Tuttavia,
questi file e directory saranno ancora accessibili alla tua applicazione quando
in esecuzione sul server di sviluppo locale.
Un elemento <include>
sostituisce il comportamento predefinito di inclusione di tutti i file. Dopo tutto, viene applicato un elemento <exclude>
Pattern <include>
(oltre a quello predefinito se non sono presenti
<include>
è specificato).
L'esempio seguente mostra come designare tutti i file .png
come statici
(tranne quelli nella directory data/
e in tutte le relative sottodirectory):
<static-files>
<include path="/**.png" />
<exclude path="/data/**.png" />
</static-files>
Puoi anche impostare le intestazioni HTTP da utilizzare per rispondere 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 al
del nome file. Puoi associare tipi MIME personalizzati al nome file
per i file statici che utilizzano 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 questo valore predefinito includendo la seguente impostazione nel
appengine-web.xml
file di configurazione. Specifica il timeout in secondi:
<system-properties>
<property name="appengine.api.urlfetch.defaultDeadline" value="10"/>
</system-properties>