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.
Sie sollten die Datei appengine-web.xml
nur zum Konfigurieren Ihrer Anwendung verwenden, wenn Sie eine vorhandene Anwendung von der Java 8-Laufzeit von App Engine zur neuesten unterstützten Java-Version migrieren und die gebündelten Legacy-Dienste verwenden möchten.
Wenn Sie in Ihrem Projekt die Datei appengine-web.xml
verwenden, wird die Datei app.yaml
bei der Bereitstellung automatisch generiert.
App Engine-Java-Anwendungen nutzen eine Konfigurationsdatei mit dem Namen appengine-web.xml
. Damit geben Sie Informationen zur Anwendung an und legen fest, welche Dateien im Verzeichnis WAR
der Anwendung statische Dateien (z. B. Bilder) und welche Ressourcendateien sind, die von der Anwendung verwendet werden.
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 |
---|---|
<application> |
Nicht erforderlich, wenn Sie Ihre Anwendung mit Google Cloud SDK-basierten Tools bereitstellen, wie z. B. dem |
|
Optional. Wenn Sie die gebündelten Legacy-Dienste von App Engine für Laufzeiten der zweiten Generation verwenden möchten, legen Sie dieses Feld auf |
|
Optional und nur für Laufzeiten der zweiten Generation. Überschreibt den Standardeinstiegspunkt, der die Prozessbefehlszeile ist, die die Java-Anwendung startet. Standardmäßig entspricht der generierte Einstiegspunkt für eine F4-Instanzklasse (Speichereinstellungen werden aus der Instanzklasse berechnet) der folgenden Konfiguration: <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>
Sie können die Konfiguration ändern, um zusätzliche JVM-Prozess-Flags hinzuzufügen oder einen eigenen Prozess zum Booten zu definieren.
Die Anwendung wird im Verzeichnis |
<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: <async-session-persistence enabled="true" /> 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: <async-session-persistence enabled="true" queue-name="myqueue"/> 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-Anwendung durch Einfügen des Abschnitts 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 <precompilation-enabled>false</precompilation-enabled> |
<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 <public-root>/static</public-root> |
<resource-files> |
Optional. Auf die im Element Das
App Engine-Ressourcendateien werden mit |
<runtime> |
Wenn Sie die neueste unterstützte Java-Version verwenden möchten, müssen Sie für diesen Eintrag den Wert <runtime>java21</runtime> |
<service> |
Dienste wurden früher als Module bezeichnet. Derzeit wird die Definition eines Dienstes als |
<service-account> |
Optional. Mit dem Element <service-account>[SERVICE_ACCOUNT_NAME]@[PROJECT_ID].iam.gserviceaccount.com</service-account> |
<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 <sessions-enabled>true</sessions-enabled>
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 <ssl-enabled>false</ssl-enabled> 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> Optional. Sie können einen HTTP-Connector zur Verbesserung der CPU- und Speicherauslastung konfigurieren. <system-properties> <property name="appengine.use.httpconnector" value="true"/> </system-properties> Ab Java 21 können Sie Ihren Java-Webserver so konfigurieren, dass er virtuelle Threads verwendet. Beispiel: <system-properties> <property name="appengine.use.virtualthreads" value="true"/> </system-properties> |
<url-stream-handler> |
Optional. Mögliche Werte sind Der Standardwert ist Wenn Sie <url-stream-handler>urlfetch</url-stream-handler> |
<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 |
<warmup-requests-enabled> |
Optional. Standardeinstellung: true. Aufwärmanfragen sind für Java-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 <warmup-requests-enabled>false</warmup-requests-enabled> |
<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. Geben Sie im
<vpc-access-connector>
<name>projects/[PROJECT_ID]/locations/[REGION]/connectors/[CONNECTOR_NAME]</name>
</vpc-access-connector> Weitere Informationen finden Sie unter Verbindung zu einem VPC-Netzwerk herstellen. |
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> <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> <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> <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 davon abhängig, ob Sie Google Cloud SDK-basierte Tools verwenden, wie z. B. die gcloud CLI oder Google Cloud SDK-basierte Maven, Gradle, Eclipse oder IntelliJ-Plug-ins verwenden.
Staging-Element | App Engine SDK-basierte Standardeinstellungen | Google Cloud SDK-basierte Standardeinstellungen |
---|---|---|
enable-jar-splitting |
false |
true |
jar-splitting-excludes |
– | – |
disable-jar-jsps |
false |
false |
enable-jar-classes |
false |
true . Dies kann sich auf die Ladereihenfolge von Klassen auswirken. Wenn Ihre Anwendung eine bestimmte Reihenfolge und somit die vorherige Standardeinstellung false erfordert können Sie diesen Wert auf false setzen. |
delete-jsps |
false |
true |
compile-encoding |
utf-8 |
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>