ID regione
REGION_ID
è un codice abbreviato assegnato da Google
in base alla regione selezionata al momento della creazione dell'app. Il codice non
corrispondono a un paese o a una provincia, anche se potrebbero essere visualizzati alcuni ID regione
in modo simile ai codici paese e provincia 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.
Il file appengine-web.xml
deve essere usato soltanto per configurare l'app
se stai eseguendo la migrazione di un'app esistente dal runtime Java 8 di App Engine alla
l'ultima versione di Java supportata e vuoi utilizzare i servizi in bundle legacy.
Se utilizzi appengine-web.xml
nel tuo progetto, app.yaml
è
generate automaticamente al momento del deployment.
Le applicazioni Java di App Engine utilizzano un file di configurazione, denominato appengine-web.xml
,
di specificare informazioni sulla tua app e identificare quali file
I file WAR
sono file statici (come le immagini) e che sono file di risorse utilizzati
per l'applicazione.
Sintassi
Un'app Java di App Engine deve avere un file denominato appengine-web.xml
nel
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 |
---|---|
<application> |
Non è obbligatorio se esegui il deployment dell'app utilizzando una piattaforma basata su Google Cloud SDK
come il comando |
|
Facoltativo. Se vuoi utilizzare
Servizi legacy in bundle di App Engine per runtime di seconda generazione,
imposta questo campo su |
|
Facoltativo e solo per i runtime di seconda generazione. Esegue l'override del punto di ingresso predefinito, ovvero del comando di processo che avvia l'applicazione Java. Per impostazione predefinita, il valore per una classe di istanza F4 (le impostazioni della memoria vengono calcolate della classe di istanza) equivale alla seguente configurazione: <appengine-web-app xmlns="http://appengine.google.com/ns/1.0"> <entrypoint> java -showversion -Xms32M -Xmx819M -XX:+UseG1GC -XX:+ParallelRefProcEnabled -XX:+PrintCommandLineFlags --add-opens java.base/java.lang=ALL-UNNAMED --add-opens java.base/java.nio.charset=ALL-UNNAMED --add-opens java.logging/java.util.logging=ALL-UNNAMED --add-opens java.base/java.util.concurrent=ALL-UNNAMED -Dclasspath.runtimebase=/base/java_runtime -Djava.class.path=/base/java_runtime/runtime-main.jar -Djava.library.path=/base/java_runtime: com/google/apphosting/runtime/JavaRuntimeMainWithDefaults --fixed_application_path=/workspace /base/java_runtime </entrypoint> </appengine-web-app>
Puoi modificare la configurazione per aggiungere ulteriori flag di processo JVM o definire il tuo processo per l'avvio.
Tieni presente che il deployment dell'applicazione viene eseguito nella directory |
<async-session-persistence> |
Facoltativo. È possibile ridurre la latenza delle richieste configurando per scrivere in modo asincrono i dati di sessione HTTP datastore: <async-session-persistence enabled="true" /> Con la persistenza della sessione asincrona attivata, App Engine invia un'attività della coda di attività per scrivere i dati della sessione nel datastore prima scrivere i dati in memcache. Per impostazione predefinita, l'attività verrà inviata alla coda "predefinita". Se desideri se preferisci usare una coda diversa, aggiungi l'attributo "queue-name": <async-session-persistence enabled="true" queue-name="myqueue"/> I dati di 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 verrà eseguito in Datastore, che potrebbero non disporre ancora dei dati più recenti. Questo significa che la persistenza della sessione asincrona può causare per visualizzare dati di sessione inattivi. Tuttavia, per la maggior parte delle applicazioni la latenza beneficio supera di gran lunga il rischio. |
<auto-id-policy> |
Facoltativo. Se sei
impostazione automatica degli identificatori di entità, puoi modificare il metodo
per impostare il criterio ID automatico. Di seguito sono riportate alcune 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 Scalabilità di base. |
<env-variables> |
Facoltativo.
Il file <env-variables> <env-var name="DEFAULT_ENCODING" value="UTF-8" /> </env-variables> Per evitare conflitti con il tuo ambiente locale, il server di sviluppo non imposta le variabili di ambiente in base a questo file e richiede in cui l'ambiente locale abbia già impostato queste variabili 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.
Per abilitare il servizio per un'app Java, devi includere un'istanza
Sezione È disponibile il seguente servizio in entrata:
|
<instance-class> |
Facoltativo. Le dimensioni della classe di istanza per questo modulo. Le seguenti classi di istanze sono disponibili quando specifichi diverse opzioni di scalabilità:
|
<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 all'originale in bytecode.
Se, per qualche motivo, preferisci che la tua app non utilizzi la precompilazione,
puoi disattivarla aggiungendo quanto segue alle
File <precompilation-enabled>false</precompilation-enabled> |
<module> |
Nota: i moduli sono ora denominati
Servizi
e i servizi sono ancora dichiarati in 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ò contenere più di 63 caratteri, iniziano o terminano con un trattino e contengono stringa "-dot". Scegli un nome univoco per ogni servizio e ogni completamente gestita. Non riutilizzare i nomi tra servizi e versioni. Vedi anche servizio. |
<public-root> |
Facoltativo.
Il valore predefinito di
Ad esempio, di seguito viene mappato il percorso dell'URL
<public-root>/static</public-root> |
<resource-files> |
Facoltativo. I file elencati nel
L'elemento
L'elemento
I file di risorse di App Engine vengono letti utilizzando |
<runtime> |
Per utilizzare l'ultima versione di Java supportata, devi specificare questa voce con il valore
<runtime>java21</runtime> |
<service> |
I servizi in precedenza erano noti come moduli. Attualmente, la definizione di un servizio come:
|
<service-account> |
Facoltativo. L'elemento <service-account>[SERVICE_ACCOUNT_NAME]@[PROJECT_ID].iam.gserviceaccount.com</service-account> |
<sessions-enabled> |
Facoltativo. App Engine include un'implementazione di sessioni utilizzando l'interfaccia delle sessioni 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
<sessions-enabled>true</sessions-enabled>
L'implementazione crea entità Datastore del tipo
Nota. Poiché App Engine archivia i dati di sessione
Datastore e memcache, tutti i valori archiviati nella sessione devono
implementare l'interfaccia
Vedi
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 il protocollo HTTPS per determinati URL nella descrittore di deployment. Consulta Deployment Descrittore: URL protetti.
Se vuoi impedire l'utilizzo di HTTPS per l'applicazione, inserisci il metodo
nel file <ssl-enabled>false</ssl-enabled> Non è possibile in alcun modo consentire l'utilizzo del protocollo HTTPS per alcuni percorsi URL e non per altri in Java. dell'ambiente di runtime. |
<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> Facoltativo. Puoi configurare un connettore HTTP per migliorare la CPU dell'utilizzo della memoria. <system-properties> <property name="appengine.use.httpconnector" value="true"/> </system-properties> A partire da Java 21, puoi configurare Server web Java per utilizzare i thread virtuali. Ad esempio: <system-properties> <property name="appengine.use.virtualthreads" value="true"/> </system-properties>Per ulteriori informazioni sul supporto dei thread, consulta Jetty 12 - Supporto per i thread virtuali. |
<url-stream-handler> |
Facoltativo. Valori possibili: Il valore predefinito è Se imposti <url-stream-handler>urlfetch</url-stream-handler> |
<version> |
L'elemento
I nomi delle versioni devono iniziare con una lettera, per distinguerli dalle
numeriche che sono sempre specificate da un numero. Ciò evita
l'ambiguità di URL come |
<warmup-requests-enabled> |
Facoltativo. Valore predefinito: true. Le richieste di riscaldamento sono abilitate per impostazione predefinita applicazioni Java.
Con le richieste di warmup abilitate, l'infrastruttura App Engine emette "GET"
richieste a
Per disabilitare le richieste di warmup, specifica <warmup-requests-enabled>false</warmup-requests-enabled> |
<vpc-access-connector> |
Facoltativo.
Configura la tua applicazione per l'uso di un accesso VPC serverless
il connettore dati, consentendo all'applicazione di inviare richieste
delle tue risorse nella tua rete VPC. Specifica il nome completo di un
connettore nell'elemento <vpc-access-connector> <name>projects/[PROJECT_ID]/locations/[REGION]/connectors/[CONNECTOR_NAME]</name> </vpc-access-connector> Per ulteriori informazioni, vedi Connessione a risorse interne in una rete VPC. |
Elementi di scalabilità
La tabella seguente elenca le opzioni per definire come specificare l'applicazione deve scalare.
Per un confronto delle caratteristiche prestazionali dei tipi di scalabilità, consulta Scalabilità delle istanze dinamiche.
Elemento | Descrizione |
---|---|
<automatic-scaling> |
Facoltativo. La scalabilità automatica viene utilizzata per impostazione predefinita con un
dell'istanza 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> <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> <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> <instance-class>B8</instance-class> <manual-scaling> <instances>5</instances> </manual-scaling> </appengine-web-app> |
Elementi temporanei
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. Facoltativamente, puoi configurare alcune parti della gestione temporanea il comportamento dell'utente usando elementi temporanei nel file di configurazione dell'applicazione. Più alta il deployment delle applicazioni verrà eseguito correttamente senza configurare manualmente la gestione temporanea comportamento degli utenti. Se il deployment dell'app non viene eseguito, potrebbe essere necessario configurare la gestione temporanea utilizzando le opzioni mostrate di seguito.
Elemento | Descrizione |
---|---|
<staging> |
Facoltativo. La maggior parte delle applicazioni non ha bisogno di modificare il comportamento predefinito. L'elemento gestione temporanea ti consente di specificare una determinata fase se necessario per il deployment. Questo elemento può contenere i seguenti elementi:
Ad esempio: <staging> <delete-jsps>false</delete-jsps> </staging> |
Impostazioni predefinite opzioni di gestione temporanea
I valori predefiniti per le opzioni di gestione temporanea sono diversi a seconda che utilizzi o meno Strumenti basati su Google Cloud SDK, come gcloud CLI, o Basato su Google Cloud SDK Maven Gradle Plug-in Eclipse o IntelliJ.
Elemento temporaneo | Valori predefiniti basati su SDK App Engine - | Impostazioni predefinite basate su Google Cloud SDK |
---|---|---|
enable-jar-splitting |
false |
true |
jar-splitting-excludes |
NA | NA |
disable-jar-jsps |
false |
false |
enable-jar-classes |
false |
true . Ciò può influire sull'ordine di caricamento della classe, quindi se la tua app dipende da un determinato ordine utilizzando la precedente impostazione predefinita di false , puoi impostarla su false . |
delete-jsps |
false |
true |
compile-encoding |
utf-8 |
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ù
di qualsiasi carattere nel nome di un file o di una directory e **
rappresenta zero o più
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
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 quando rispondi alle richieste che Google Cloud.
<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 questa impostazione predefinita includendo la seguente impostazione nel
di configurazione di appengine-web.xml
. Specifica il timeout in secondi:
<system-properties>
<property name="appengine.api.urlfetch.defaultDeadline" value="10"/>
</system-properties>