ID de la région
Le REGION_ID
est un code abrégé que Google attribue en fonction de la région que vous sélectionnez lors de la création de votre application. Le code ne correspond pas à un pays ou une province, même si certains ID de région peuvent ressembler aux codes de pays et de province couramment utilisés. Pour les applications créées après février 2020, REGION_ID.r
est inclus dans les URL App Engine. Pour les applications existantes créées avant cette date, l'ID de région est facultatif dans l'URL.
En savoir plus sur les ID de région
En plus du descripteur de déploiement web.xml
, les applications Java d'App Engine utilisent un fichier de configuration, nommé appengine-web.xml
, pour spécifier les informations relatives à votre application et identifier les fichiers statiques (tels que les images) dans le fichier WAR
de l'application ainsi que les fichiers de ressources utilisés par l'application.
Exemple
L'exemple suivant est un fichier minimal spécifiant l'environnement d'exécution Java 8 et aucun fichier statique ni fichier de ressource :
<?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>
Syntaxe
Toute application Java App Engine doit comporter un fichier appengine-web.xml
dans son fichier d'archives WAR, dans le répertoire WEB-INF/
. Il s'agit d'un fichier XML dont l'élément racine est <appengine-web-app>
.
Vous trouverez la définition du type de document et les spécifications de schéma du fichier appengine-web.xml
dans le répertoire docs/
du SDK.
Élément | Description |
---|---|
<async-session-persistence> |
Facultatif. Il est possible de réduire la latence de la requête en configurant votre application pour une écriture asynchrone des données de session HTTP dans le 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> Avec la persistance de session asynchrone activée, App Engine soumet une tâche de file d'attente de tâches pour écrire des données de session dans le datastore avant de les écrire dans Memcache. Par défaut, la tâche sera soumise à la file d'attente "default" (par défaut). Si vous souhaitez utiliser une autre file d'attente, ajoutez l'attribut "queue-name" comme suit : <?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> Les données de session sont toujours écrites de manière synchrone dans le memcache. Si une requête essaie de lire les données de session alors que le memcache n'est pas disponible (ou que les données de session ont été vidées), elle basculera sur Datastore, qui ne dispose peut-être pas encore des données de session les plus récentes. Cela signifie que la persistance de session asynchrone peut amener votre application à afficher des données de session obsolètes. Cependant, pour la plupart des applications, l'avantage du temps de latence compense largement le risque encouru. |
<auto-id-policy> |
Facultatif. Si vous configurez automatiquement des identifiants d'entité, vous pouvez modifier la méthode employée en définissant une règle d'ID automatique. Les options suivantes sont valides :
|
<automatic-scaling> |
Facultatif. Pour une explication complète, consultez la section Mise à l'échelle automatique. |
<basic-scaling> |
Facultatif. Pour une explication complète, consultez la section relative au scaling de base. |
<env-variables> |
Facultatif.
Le fichier <env-variables> <env-var name="DEFAULT_ENCODING" value="UTF-8" /> </env-variables> Pour éviter les conflits avec votre environnement local, le serveur de développement ne définit pas de variables d'environnement basées sur ce fichier et requiert que ces variables soient déjà définies dans l'environnement local avec des valeurs correspondantes. export DEFAULT_ENCODING="UTF-8" dev_appserver war Lorsqu'il est déployé dans App Engine, l'environnement est créé avec ces variables déjà définies. |
<inbound-services> |
Facultatif.
Avant qu'une application puisse recevoir un e-mail, elle doit être configurée pour activer le service.
Afin d'activer le service pour une application Java 8, vous devez inclure une section Le service entrant suivant est disponible :
|
<instance-class> |
Facultatif. Taille de la classe d'instance pour ce module. Les classes d'instance suivantes sont disponibles lorsque vous spécifiez différentes options de scaling :
|
<manual-scaling> |
Facultatif. Pour une explication complète, consultez la section relative au scaling manuel. |
<precompilation-enabled> |
Facultatif. App Engine utilise un processus de "précompilation" avec le bytecode Java d'une application pour améliorer les performances de l'application au sein de l'environnement d'exécution Java. Le code précompilé fonctionne de la même manière que le bytecode d'origine. Si, pour une raison quelconque, vous préférez que votre application n'utilise pas la précompilation, il vous est possible de la désactiver en insérant le code suivant dans le fichier <?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 |
Remarque : Les modules sont maintenant appelés services et les services sont toujours déclarés dans les fichiers Obligatoire si vous créez un service. Facultatif pour le service par défaut. Un nom doit avoir été attribué à chaque service et à chaque version. Il peut contenir des chiffres, des lettres et des traits d'union. Il ne peut pas comporter plus de 63 caractères, commencer ou se terminer par un trait d'union ni contenir la chaîne "-dot". Choisissez un nom unique pour chaque service et chaque version. N'utilisez pas le même nom pour plusieurs services ou versions. Consultez également l'élément service. |
<public-root> |
Facultatif.
La valeur L'exemple suivant permet de mapper le chemin d'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> |
Facultatif. Les fichiers répertoriés dans l'élément Un élément
Les fichiers de ressources App Engine sont lus à l'aide de |
runtime |
Pour utiliser l'environnement d'exécution Java 8, vous devez spécifier cette entrée avec la valeur Exemple : <?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 |
Les services étaient anciennement appelés modules. Actuellement, seules les commandes gcloud app sont compatibles avec la définition d'un service comme suit : |
service-account |
Facultatif. L'élément <?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> |
Facultatif. App Engine comprend une mise en œuvre de sessions, à l'aide de l'interface de session du servlet. La mise en œuvre stocke les données de session dans Datastore pour la persistance, et utilise également le memcache pour la rapidité. Au même titre que la plupart des autres conteneurs du servlet, les attributs de session définis à l'aide de "session.setAttribute()" pendant la requête sont conservés à l'issue de cette requête.
Cette fonctionnalité est désactivée par défaut. Pour l'activer, entrez le code suivant dans le fichier <?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'implémentation crée des entités Datastore de type Remarque : App Engine stocke les données de session dans Datastore et Memcache. Toutes les valeurs stockées dans la session doivent donc mettre en œuvre l'interface Consultez l'élément |
<ssl-enabled> |
Facultatif. Par défaut, un utilisateur peut accéder à n'importe quelle URL via HTTP ou HTTPS. À l'aide du fichier descripteur de déploiement, vous pouvez configurer une application de manière à forcer l'utilisation du protocole HTTPS pour certaines URL. Consultez la section Descripteur de déploiement : URL sécurisées. Pour interdire l'utilisation du protocole HTTPS pour l'application, insérez le code suivant dans le fichier <?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> Toutefois, dans l'environnement d'exécution Java, il n'est pas possible d'interdire le protocole HTTPS pour certains chemins d'URL seulement. |
<static-error-handlers> |
Facultatif.
Lorsque certaines erreurs se produisent, App Engine diffuse une page d'erreur générique. Vous pouvez configurer votre application de sorte qu'elle diffuse un fichier statique personnalisé au lieu de ces pages d'erreur génériques, tant que les données d'erreur personnalisées sont inférieures à 10 kilo-octets. Vous pouvez configurer la diffusion de fichiers statiques différents pour chaque code d'erreur pris en charge, en les spécifiant dans le fichier <static-error-handlers> <handler file="default_error.html" /> <handler file="over_quota.html" error-code="over_quota" /> </static-error-handlers> Avertissement : Veillez à ce que le chemin du fichier à diffuser en cas d'erreur ne chevauche pas les chemins vers le gestionnaire de fichiers statiques.
Chaque entrée
L'attribut
Vous pouvez éventuellement spécifier un élément |
<static-files> |
Facultatif.
L'élément Un élément
<static-files> <include path="/my_static-files" > <http-header name="Access-Control-Allow-Origin" value="http://example.org" /> </include> </static-files> |
<system-properties> |
Facultatif. Le fichier <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> |
Obligatoire.
Lorsque l'élément <?xml version="1.0" encoding="utf-8"?> <appengine-web-app xmlns="http://appengine.google.com/ns/1.0"> <!-- ... --> <threadsafe>true</threadsafe> <!-- ... --> </appengine-web-app> Si vous voulez utiliser des requêtes simultanées, votre code d'application doit utiliser une synchronisation de threads appropriée avant d'activer Cet élément n'est pas compatible dans les environnements d'exécution Java 11 ou ultérieurs. |
<url-stream-handler> |
Facultatif. Les valeurs possibles sont La valeur par défaut est Si vous définissez <?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'élément
Les noms des versions doivent commencer par une lettre pour les distinguer des instances numériques qui sont toujours spécifiées par un nombre. Cela évite toute ambiguïté avec les URL comme
App Engine utilise cet identifiant de version pour déterminer s'il convient de créer une nouvelle version de l'application avec l'identifiant concerné (ou de remplacer la version de l'application par l'identifiant s'il en existe déjà une). Vous pouvez tester les nouvelles versions de votre application avec une URL en utilisant "-dot-" comme séparateur de sous-domaine dans l'URL, par exemple |
<warmup-requests-enabled> |
Facultatif. Valeur par défaut : "true". Les requêtes de préchauffage sont activées par défaut pour les applications Java 8.
Lorsque les requêtes de préchauffage sont activées, App Engine émet des requêtes GET auprès de Pour désactiver les requêtes de préchauffage, spécifiez la valeur <?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> |
Facultatif. Configure votre application pour utiliser un connecteur d'accès au VPC sans serveur afin d'envoyer des requêtes à des ressources internes du réseau VPC. Pour en savoir plus, consultez Se connecter à un réseau VPC.
<vpc-access-connector> <name>projects/PROJECT_ID/locations/REGION/connectors/CONNECTOR_NAME</name> <egress-setting>all-traffic</egress-setting> </vpc-access-connector> |
Éléments de scaling
Le tableau suivant répertorie les options permettant de définir le type de scaling de votre application.
Pour comparer les fonctionnalités de performances des types de scaling, consultez la section Scaling des instances dynamiques.
Élément | Description |
---|---|
<automatic-scaling> |
Facultatif. Le scaling automatique est défini avec une classe d'instance L'élément Cet élément peut contenir les éléments suivants :
<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> |
Facultatif.
L'élément Cet élément peut contenir les éléments suivants :
<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> |
Facultatif.
L'élément Cet élément peut contenir les éléments suivants :
<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> |
Éléments de préproduction
Une grande partie du travail effectué lors d'un déploiement est réalisé localement au cours d'une étape de préparation appelée préproduction, où les fichiers JAR sont assemblés, les fichiers JSP compilés, etc. Si nécessaire, vous pouvez configurer certaines parties du comportement de préproduction, à l'aide des éléments de préproduction présents dans le fichier de configuration de l'application. La plupart des applications seront correctement déployées sans configuration manuelle du comportement de préproduction. Si votre application ne se déploie pas, vous devrez peut-être configurer la préproduction à l'aide des options présentées ci-dessous.
Élément | Description |
---|---|
<staging> |
Facultatif. Pour la plupart des applications, il n'est pas nécessaire de modifier le comportement par défaut. L'élément "staging" vous permet de spécifier, si nécessaire, une configuration de préproduction particulière pour le déploiement. Cet élément peut contenir les éléments suivants :
Exemple : <staging> <delete-jsps>false</delete-jsps> </staging> |
Options de préproduction par défaut
Les valeurs par défaut des options de préproduction sont les suivantes :
Élément de préproduction | Valeur par défaut |
---|---|
enable-jar-splitting |
true |
jar-splitting-excludes |
NA |
disable-jar-jsps |
false |
enable-jar-classes |
true . Cet élément peut influencer l'ordre de chargement des classes. Si votre application dépend d'un certain ordre, définissez-le sur false . |
delete-jsps |
true |
compile-encoding |
utf-8 |
Inclure et exclure la syntaxe
Le format des chemins d'accès est défini à l'aide des éléments <include>
et <exclude>
. Dans un format, '*'
représente de zéro à plusieurs caractères dans un nom de fichier ou de répertoire, tandis que **
représente de zéro à plusieurs répertoires dans un chemin d'accès. Les fichiers et répertoires correspondant aux formats <exclude>
ne sont pas importés lorsque vous déployez votre application vers App Engine. Toutefois, ces fichiers et répertoires resteront accessibles à votre application lors de son exécution sur le serveur de développement local.
L'élément <include>
se substitue au comportement par défaut, à savoir l'inclusion de tous les fichiers. L'élément <exclude>
s'applique à la fin de tous les formats <include>
(ainsi que de la valeur par défaut si aucun élément <include>
explicite n'est fourni).
L'exemple ci-dessous montre comment définir l'ensemble des fichiers .png
en tant que fichiers statiques (à l'exception de ceux situés dans le répertoire data/
et ses sous-répertoires) :
<static-files>
<include path="/**.png" />
<exclude path="/data/**.png" />
</static-files>
Vous pouvez également définir les en-têtes HTTP à utiliser pour répondre aux requêtes adressées à ces ressources statiques.
<static-files>
<include path="/my_static-files" >
<http-header name="Access-Control-Allow-Origin"
value="http://example.org" />
</include>
</static-files>
Types MIME pour les fichiers statiques
Par défaut, les fichiers statiques sont diffusés à l'aide d'un type MIME sélectionné en fonction de l'extension du nom de fichier. Vous pouvez associer des types MIME personnalisés à des extensions de nom de fichier pour des fichiers statiques à l'aide des éléments <mime-mapping>
dans web.xml
.
Délai avant expiration des requêtes URLFetch
Vous pouvez définir un délai pour chaque requête URLFetch. Par défaut, le délai pour une récupération est de 5 secondes.
Vous pouvez modifier cette valeur par défaut en incluant le paramètre suivant dans votre fichier de configuration appengine-web.xml
. Spécifiez le délai avant expiration en secondes :
<system-properties>
<property name="appengine.api.urlfetch.defaultDeadline" value="10"/>
</system-properties>