Regions-ID
REGION_ID
ist ein abgekürzter Code, den Google anhand der Region zuweist, die Sie beim Erstellen Ihrer Anwendung ausgewählt haben. Der Code bezieht sich nicht auf ein Land oder eine Provinz, auch wenn einige Regions-IDs häufig verwendeten Länder- und Provinzcodes ähneln können. Bei Anwendungen, die nach Februar 2020 erstellt wurden, ist REGION_ID.r
in den App Engine-URLs enthalten. Bei Anwendungen, die vor diesem Datum erstellt wurden, ist die Regions-ID in der URL optional.
Eine App Engine-Java-Anwendung verwendet neben dem Deployment-Deskriptor web.xml
eine Konfigurationsdatei mit dem Namen appengine-web.xml
. Damit geben Sie Informationen zur Anwendung an und legen fest, welche Dateien in der WAR
-Datei der Anwendung statische Dateien (z. B. Bilder) und welche Ressourcendateien sind, die von der Anwendung verwendet werden.
Beispiel
Das folgende Beispiel ist eine minimale Datei, die die Java 8-Laufzeit ohne statische Dateien oder Ressourcendateien angibt:
<?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>
Syntax
Das WAR einer Java-Anwendung für App Engine muss eine Datei namens appengine-web.xml
im Verzeichnis WEB-INF/
aufweisen. Hierbei handelt es sich um eine XML-Datei mit dem Stammelement <appengine-web-app>
.
Sie finden die Dokumenttypdefinition und die Schemaspezifikationen für appengine-web.xml
im SDK-Verzeichnis docs/
.
Element | Beschreibung |
---|---|
<async-session-persistence> |
Optional. Wenn Sie die Latenz von Anfragen reduzieren möchten, konfigurieren Sie Ihre Anwendung so, dass sie HTTP-Sitzungsdaten asynchron in den Datenspeicher schreibt: <?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> Wenn die asynchrone Sitzungspersistenz (async-session-persistence) aktiviert ist, sendet App Engine zuerst eine Aufgabe zum Schreiben von Sitzungsdaten in den Datenspeicher an die Aufgabenwarteschlange und schreibt die Daten dann in Memcache. Die Aufgabe wird standardmäßig an die "Standardwarteschlange" gesendet. Wenn Sie eine andere Warteschlange verwenden möchten, fügen Sie das Attribut "queue-name" hinzu: <?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> Sitzungsdaten werden immer synchron in Memcache geschrieben. Wenn eine Anfrage versucht, die Sitzungsdaten zu lesen, wenn Memcache nicht verfügbar ist (oder die Sitzungsdaten gelöscht wurden), erfolgt ein Failover auf den Datenspeicher, der möglicherweise noch nicht über die neuesten Sitzungsdaten verfügt. Das bedeutet, dass das Aktivieren der asynchronen Sitzungspersistenz dazu führen kann, dass Ihrer Anwendung veraltete Sitzungsdaten angezeigt werden. Bei den meisten Anwendungen überwiegt jedoch der Latenzvorteil das Risiko bei Weitem. |
<auto-id-policy> |
Optional. Wenn Sie Entitätenbezeichner automatisch festlegen, können Sie die verwendete Methode ändern, indem Sie die Richtlinie zur automatischen ID-Vergabe (auto ID policy) einrichten. Folgende Optionen sind gültig:
|
<automatic-scaling> |
Optional. Eine ausführliche Erläuterung finden Sie im Abschnitt zur automatischen Skalierung. |
<basic-scaling> |
Optional. Eine ausführliche Erläuterung finden Sie im Abschnitt zur grundlegenden Skalierung. |
<env-variables> |
Optional.
Die <env-variables> <env-var name="DEFAULT_ENCODING" value="UTF-8" /> </env-variables> Zur Vermeidung von Konflikten mit Ihrer lokalen Umgebung legt der Entwicklungsserver Umgebungsvariablen nicht anhand dieser Datei fest. Stattdessen müssen für diese Variablen bereits passende Werte in der lokalen Umgebung angegeben sein. export DEFAULT_ENCODING="UTF-8" dev_appserver war Bei Bereitstellung der Anwendung in App Engine wird die Umgebung mit diesen bereits festgelegten Variablen erstellt. |
<inbound-services> |
Optional.
Bevor eine Anwendung E-Mails empfangen kann, muss sie so konfiguriert werden, dass der entsprechende Dienst aktiviert ist.
Sie aktivieren den Dienst für eine Java 8-Anwendung, indem Sie den Abschnitt Der folgende Eingangsdienst ist verfügbar:
|
<instance-class> |
Optional. Die Größe der Instanzklasse für dieses Modul. Je nachdem, welche Skalierungsoptionen Sie angeben, sind folgende Instanzklassen verfügbar:
|
<manual-scaling> |
Optional. Eine ausführliche Erklärung finden Sie im Abschnitt zur manuellen Skalierung. |
<precompilation-enabled> |
Optional. App Engine verwendet einen Vorkompilierungsprozess mit dem Java-Bytecode einer Anwendung, um deren Leistung in der Java-Laufzeitumgebung zu verbessern. Der vorkompilierte Code funktioniert ebenso wie der ursprüngliche Bytecode. Wenn Sie aus irgendwelchen Gründen für Ihre Anwendung keine Vorkompilierung verwenden möchten, können Sie diese Funktion deaktivieren. Fügen Sie hierzu Folgendes zu Ihrer <?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 |
Hinweis: Module heißen jetzt Dienste und Dienste werden weiterhin in Erforderlich, wenn Sie einen Dienst erstellen. Optional für den Standarddienst. Jeder Dienst und jede Version muss einen Namen haben. Ein Name kann Zahlen, Buchstaben und Bindestriche enthalten. Er darf maximal 63 Zeichen lang sein und darf nicht mit einem Bindestrich beginnen oder enden oder den String "-dot" enthalten. Wählen Sie für jeden Dienst und jede Version einen eindeutigen Namen. Verwenden Sie Namen von Diensten und Versionen nicht doppelt. Weitere Informationen finden Sie unter Dienst. |
<public-root> |
Optional.
Der Standardwert von Im folgenden Beispielcode wird der URL-Pfad <?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> |
Optional. Auf die im Element Das
App Engine-Ressourcendateien werden mit |
runtime |
Wenn Sie die Java 8-Laufzeit verwenden möchten, müssen Sie für diesen Eintrag den Wert Beispiel: <?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 |
Dienste wurden früher als Module bezeichnet. Derzeit wird die Definition eines Dienstes als |
service-account |
Optional. Mit dem Element <?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> |
Optional. App Engine enthält eine Implementierung von Sitzungen, welche die Servlet-Sitzungsschnittstelle verwendet. Die Implementierung speichert Sitzungsdaten zu Persistenzzwecken im Datenspeicher und verwendet Memcache, um die Geschwindigkeit zu erhöhen. Wie bei den meisten anderen Servlet-Containern werden auch hier die Sitzungsattribute, die während der Anfrage mithilfe von "session.setAttribute()" festgelegt werden, am Ende der Anfrage beibehalten.
Diese Funktion ist standardmäßig deaktiviert. Fügen Sie zur Aktivierung <?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>
Die Implementierung erstellt Datastore-Einheiten vom Typ Hinweis: Da App Engine Sitzungsdaten in Datastore und in Memcache speichert, müssen alle in der Sitzung gespeicherten Werte die Schnittstelle Weitere Informationen zum Verringern der Latenz beim Speichern von Sitzungsdaten finden Sie unter
|
<ssl-enabled> |
Optional. Nutzer können standardmäßig jede URL über HTTP oder HTTPS aufrufen. Sie können eine Anwendung in der Einrichtungsbeschreibung so konfigurieren, dass für bestimmte URLs HTTPS erforderlich ist. Siehe Bereitstellungsdeskriptor: Sichere URLs. Wenn Sie die Nutzung von HTTPS für die Anwendung nicht gestatten möchten, geben Sie Folgendes in der <?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> In der Java-Laufzeitumgebung ist es nicht möglich, HTTPS nur für bestimmte URL-Pfade nicht zuzulassen. |
<static-error-handlers> |
Optional.
Bei bestimmten Fehlern wird von App Engine eine allgemeine Fehlerseite angezeigt. Sie können Ihre Anwendung so konfigurieren, dass anstelle dieser allgemeinen Fehlerseiten eine benutzerdefinierte statische Datei bereitgestellt wird, wenn die Größe der benutzerdefinierten fehlerbezogenen Daten weniger als 10 Kilobyte beträgt. Sie können für jeden unterstützten Fehlercode jeweils verschiedene statische Dateien einrichten, indem Sie die Dateien in der <static-error-handlers> <handler file="default_error.html" /> <handler file="over_quota.html" error-code="over_quota" /> </static-error-handlers> Warnung: Der Pfad zur Fehlerantwortdatei darf sich nicht mit den Handler-Pfaden für statische Dateien überschneiden.
Jeder
Der
Optional können Sie einen |
<static-files> |
Optional.
Das Das
<static-files> <include path="/my_static-files" > <http-header name="Access-Control-Allow-Origin" value="http://example.org" /> </include> </static-files> |
<system-properties> |
Optional. Die <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> |
Erforderlich.
Wenn in <?xml version="1.0" encoding="utf-8"?> <appengine-web-app xmlns="http://appengine.google.com/ns/1.0"> <!-- ... --> <threadsafe>true</threadsafe> <!-- ... --> </appengine-web-app> Wenn Sie mit gleichzeitigen Anfragen arbeiten möchten, muss Ihr Anwendungscode ordnungsgemäß mit Thread-Synchronisierung arbeiten, bevor Sie Dieses Element wird in der Java-Laufzeit ab Version 11 nicht unterstützt. |
<url-stream-handler> |
Optional. Mögliche Werte sind Der Standardwert ist Wenn Sie <?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> |
Das
Versionsnamen sollten mit einem Buchstaben beginnen, damit sie sich von numerischen Instanzen unterscheiden, welche immer mit einer Zahl benannt werden. Damit wird das Problem der Mehrdeutigkeit umgangen, das bei URLs wie
App Engine ermittelt anhand dieser Versionskennung, ob eine neue Version der Anwendung mit der angegebenen Kennung erstellt oder die Version der Anwendung durch die vorhandene Kennung ersetzt werden soll, falls bereits eine vorhanden ist. Sie können neue Versionen Ihrer Anwendung mit einer URL testen, wenn Sie "-dot-" als Subdomain-Trennzeichen in der URL verwenden, z. B. |
<warmup-requests-enabled> |
Optional. Standardeinstellung: true. Aufwärmanfragen sind für Java 8-Anwendungen standardmäßig aktiviert.
Wenn Aufwärmanfragen aktiviert sind, sendet die App Engine-Infrastruktur GET-Anfragen an Zum Deaktivieren von Aufwärmanfragen geben Sie für dieses Element den Wert <?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> |
Optional. Konfiguriert Ihre Anwendung für die Verwendung eines Connectors für serverlosen VPC-Zugriff, damit sie Anfragen an interne Ressourcen in Ihrem VPC-Netzwerk senden kann. Weitere Informationen finden Sie unter Verbindung zu einem VPC-Netzwerk herstellen.
<vpc-access-connector> <name>projects/PROJECT_ID/locations/REGION/connectors/CONNECTOR_NAME</name> <egress-setting>all-traffic</egress-setting> </vpc-access-connector> |
Elemente skalieren
In der folgenden Tabelle sind die Optionen aufgeführt, mit denen Sie festlegen können, wie eine Anwendung skaliert werden soll.
Einen Vergleich der Leistungsmerkmale der Skalierungstypen finden Sie unter Dynamische Instanzen skalieren.
Element | Beschreibung |
---|---|
<automatic-scaling> |
Optional. Die automatische Skalierung gilt standardmäßig mit der Standardinstanzklasse Mit dem Element Dieses Element kann folgende Elemente enthalten:
<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> |
Optional.
Das Element Dieses Element kann folgende Elemente enthalten:
<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> |
Optional.
Das Element Dieses Element kann folgende Elemente enthalten:
<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> |
Staging-Elemente
Ein großer Teil der bei einer Bereitstellung anfallenden Arbeit wird in einem Vorbereitungsschritt namens Staging lokal verrichtet. In diesem Schritt werden beispielsweise JAR-Dateien zusammengestellt oder JSP-Dateien kompiliert. Optional können Sie in der Konfigurationsdatei der Anwendung bestimmte Aspekte des Staging-Verhaltens mithilfe von Staging-Elementen konfigurieren. Die meisten Anwendungen können erfolgreich bereitgestellt werden, ohne dass das Staging-Verhalten manuell konfiguriert werden muss. Wenn Ihre Anwendung jedoch nicht bereitgestellt wird, müssen Sie möglicherweise das Staging-Verhalten mithilfe der unten aufgeführten Optionen konfigurieren.
Element | Beschreibung |
---|---|
<staging> |
Optional. Bei den meisten Anwendungen muss das Standardverhalten nicht geändert werden. Mit dem Staging-Element können Sie eine bestimmte Staging-Konfiguration angeben, wenn dies für die Bereitstellung erforderlich ist. Dieses Element kann folgende Elemente enthalten:
Beispiel: <staging> <delete-jsps>false</delete-jsps> </staging> |
Standardeinstellungen für Staging-Optionen
Die Standardeinstellungen für Staging-Optionen sind:
Staging-Element | Standardwert |
---|---|
enable-jar-splitting |
true |
jar-splitting-excludes |
– |
disable-jar-jsps |
false |
enable-jar-classes |
true . Dies kann sich auf die Ladereihenfolge von Klassen auswirken. Wenn Ihre Anwendung von einer bestimmten Reihenfolge abhängt, legen Sie diesen Wert auf false fest. |
delete-jsps |
true |
compile-encoding |
utf-8 |
Syntax ein- und ausschließen
Pfadmuster werden unter Verwendung von null oder mehr <include>
- und <exclude>
-Elementen festgelegt. In einem Muster steht '*'
für null oder mehr Vorkommnisse eines beliebigen Zeichens in einem Datei- oder Verzeichnisnamen, während **
für null oder mehr Verzeichnisse in einem Pfad steht. Dateien und Verzeichnisse, die mit <exclude>
-Mustern übereinstimmen, werden nicht hochgeladen, wenn Sie Ihre Anwendung in App Engine bereitstellen. Diese Dateien und Verzeichnisse sind für Ihre Anwendung aber weiterhin zugänglich, wenn sie auf dem lokalen Entwicklungsserver ausgeführt wird.
Ein <include>
-Element setzt das Standardverhalten, bei dem alle Dateien eingeschlossen werden, außer Kraft. Ein <exclude>
-Element findet nach allen <include>
-Mustern Anwendung (ebenso wie das Standardverhalten, falls kein explizites <include>
-Muster angegeben wurde).
Das folgende Beispiel demonstriert, wie alle .png
-Dateien als statische Dateien gekennzeichnet werden können (mit Ausnahme der Dateien im data/
-Verzeichnis sowie allen vorhandenen Unterverzeichnissen):
<static-files>
<include path="/**.png" />
<exclude path="/data/**.png" />
</static-files>
Sie können auch HTTP-Header festlegen, die beim Beantworten von Anfragen an diese statischen Ressourcen verwendet werden sollen.
<static-files>
<include path="/my_static-files" >
<http-header name="Access-Control-Allow-Origin"
value="http://example.org" />
</include>
</static-files>
MIME-Typen für statische Dateien
Statische Dateien werden standardmäßig mithilfe eines MIME-Typs bereitgestellt, der anhand der Dateinamenserweiterung ausgewählt wird. Sie können benutzerdefinierte MIME-Typen mithilfe von <mime-mapping>
-Elementen in web.xml
mit Dateinamenerweiterungen für statische Dateien verknüpfen.
URLFetch-Zeitlimit
Sie können für jede URLFetch-Anfrage eine Frist festlegen. Standardmäßig beträgt die Frist für einen Abruf fünf Sekunden.
Sie können diese Standardeinstellung ändern und die folgende Einstellung in Ihre Konfigurationsdatei appengine-web.xml
einfügen. Geben Sie dabei das Zeitlimit in Sekunden an:
<system-properties>
<property name="appengine.api.urlfetch.defaultDeadline" value="10"/>
</system-properties>