Lokalen Entwicklungsserver verwenden

Der lokale Entwicklungsserver emuliert die Java-Laufzeitumgebung von App Engine und alle zugehörigen Dienste, einschließlich Datastore.

Vorbereitung

Da Java 8 das Ende des Supports erreicht hat, können Sie Ihre Anwendungen nicht mehr mit der neuesten Version von dev_appserver.py lokal ausführen. So laden Sie eine archivierte Version von devapp_server.py herunter:

  1. Laden Sie aus dem Archiv den komprimierten Ordner herunter, der den Server dev_appserver.py für Laufzeiten enthält, die das Ende des Supports erreicht haben.

  2. Extrahieren Sie den Inhalt des Verzeichnisses in Ihr lokales Dateisystem, z. B. in Ihr /home-Verzeichnis. Sie finden dev_appserver.py im Verzeichnis google_appengine/google/appengine/tools/java/bin.

Entwicklungs-Webserver ausführen

Informationen zum Festlegen der Systemproperties und Umgebungsvariablen der Anwendung finden Sie unter Requestverarbeitung.

Sie können den Entwicklungs-Webserver auch über eine Eingabeaufforderung ausführen. Der auszuführende Befehl befindet sich im Verzeichnis des SDK mit dem relativen Pfad google_appengine/google/appengine/tools/java/bin.

Windows-Befehlssyntax:

google_appengine\google\appengine\tools\java\bin\java_dev_appserver.cmd [options] [WAR_DIRECTORY_LOCATION]

Mac OS X- oder Linux-Befehlssyntax:

google_appengine/google/appengine/tools/java/bin/java_dev_appserver.sh [options] [WAR_DIRECTORY_LOCATION]

Der Befehl verwendet den Speicherort des WAR-Verzeichnisses der Anwendung als Argument.

Den Entwicklungsserver anhalten

Drücken Sie Strg+C, um den Webserver zu beenden.

Laufzeitumgebung der Anwendung ermitteln

Ermitteln Sie den Wert der Methode SystemProperty.environment.value(), um zu prüfen, ob der Code in einer Produktionsumgebung oder auf dem lokalen Entwicklungsserver ausgeführt wird. Beispiel:

if (SystemProperty.environment.value() == SystemProperty.Environment.Value.Production) {
   // Production
 } else {
  // Local development server
  // which is: SystemProperty.Environment.Value.Development
}

Lokalen Datenspeicheremulator verwenden

Der Entwicklungs-Webserver simuliert den Datenspeicher mit einem lokalen dateigestützten Datenspeicher auf Ihrem Computer. Der Datenspeicher hat den Namen local_db.bin und wird im WAR-Verzeichnis der Anwendung und nicht im Verzeichnis WEB-INF /appengine-generated/ erstellt. Er wird nicht mit der Anwendung hochgeladen.

Dieser Datenspeicher überdauert Aufrufe des Webservers. Gespeicherte Daten sind deshalb auch bei der nächsten Ausführung des Webservers noch verfügbar. Wenn Sie den Inhalt des Datenspeichers löschen möchten, fahren Sie den Server herunter und löschen Sie anschließend diese Datei.

Wie unter Konfiguration des Datenspeicherindex beschrieben kann der Entwicklungsserver die für die Anwendung erforderliche Konfiguration von Datenspeicherindexen aus den Abfragen generieren, die beim Testen ausgeführt werden. Dabei wird eine Datei namens datastore-indexes-auto.xml im Verzeichnis WEB-INF/appengine-generated/ im WAR erzeugt. Erstellen oder bearbeiten Sie die Datei datastore-indexes.xml im Verzeichnis WEB-INF/ mit dem Attribut autoGenerate="false" für das Element <datastore-indexes>, um die automatische Indexkonfiguration zu deaktivieren.

Durch Datastore auf dem Entwicklungsserver browsen

So suchen Sie im lokalen Datenspeicher mithilfe des Entwicklungs-Webservers:

  1. Starten Sie den Entwicklungsserver, wie zuvor beschrieben.
  2. Rufen Sie die Entwicklungskonsole auf.
  3. Klicken Sie im linken Navigationsbereich auf Datastore-Betrachter, um den Inhalt des lokalen Datenspeichers anzuzeigen.

Datastore-Konsistenzmodell

Standardmäßig ist der lokale Datenspeicher so konfiguriert, dass der Prozentsatz der Schreibvorgänge im Datenspeicher, die in globalen Abfragen nicht sofort sichtbar sind, 10 % beträgt.

Wenn Sie den Konsistenzwert anpassen möchten, legen Sie für das Systemattribut datastore.default_high_rep_job_policy_unapplied_job_pct einen Wert fest, der auf das Maß der Eventual Consistency zutrifft, die die Anwendung sehen soll.

-Ddatastore.default_high_rep_job_policy_unapplied_job_pct=20

Wenn Sie dieses Attribut über die Eingabeaufforderung java_dev_appserver.sh einstellen, müssen Sie --jvm_flag=... zum Festlegen des Attributs verwenden:

google_appengine/google/appengine/tools/java/bin/java-dev_appserver.sh  --jvm_flag=-Ddatastore.default_high_rep_job_policy_unapplied_job_pct=20

Der gültige Bereich für datastore.default_high_rep_job_policy_unapplied_job_pct liegt zwischen 0 und 100. Wenn Sie Zahlen außerhalb dieses Bereichs verwenden, erhalten Sie eine Fehlermeldung.

Richtlinie für die Zuweisung automatischer IDs

Sie können konfigurieren, wie der lokale Datenspeicher automatische Entitäts-IDs zuweist.

Die folgenden Richtlinien für die Zuweisung von automatischen IDs werden vom Entwicklungsserver unterstützt:

sequential
IDs werden aus der Sequenz von aufeinanderfolgenden ganzen Zahlen zugewiesen.
scattered
IDs werden aus einer sich nicht wiederholenden Sequenz von annähernd einheitlich verteilten ganzen Zahlen zugewiesen.

Die Standardrichtlinie im lokalen Datenspeicher ist scattered.

Legen Sie für das Systemattribut datastore.auto_id_allocation_policy entweder sequential oder scattered fest, um die Richtlinie für die automatische ID anzugeben.

-Ddatastore.auto_id_allocation_policy=scattered

So legen Sie diese Systemproperty über ein Flag fest, das an den Makro "dev_appserver" übergeben wird:

java_dev_appserver --jvm_flag=-Ddatastore.auto_id_allocation_policy=scattered

Nutzerkonten simulieren

Der Entwicklungs-Webserver simuliert Google Konten mit eigenen An- und Abmeldeseiten. Bei der Ausführung unter dem Entwicklungs-Webserver geben die Methoden, mit denen An- und Abmelde-URLs generiert werden, URLs für /_ah/login und /_ah/logout auf dem lokalen Server zurück.

Die Entwicklungsanmeldeseite enthält ein Formular, in dem Sie eine E-Mail-Adresse eingeben können. Ihre Sitzung verwendet jede beliebige E-Mail-Adresse, die Sie als aktiver Nutzer eingeben.

Klicken Sie das Kästchen "Als Administrator anmelden" im Formular an, damit die Anwendung annimmt, dass der angemeldete Nutzer ein Administrator ist.

URL-Abruf verwenden

Wenn die Anwendung die API für den URL-Abruf zum Erstellen eines HTTP-Requests verwendet, führt der Entwicklungs-Webserver den Request direkt von Ihrem Computer aus. Diese Vorgehensweise unterscheidet sich möglicherweise von der Ausführung der Anwendung in App Engine, wenn Sie für den Zugriff auf Websites einen Proxyserver verwenden.

Entwicklungskonsole

Der Entwicklungs-Webserver enthält eine Konsolen-Webanwendung. Mit der Konsole können Sie im lokalen Datenspeicher suchen.

Wenn Sie die Konsole öffnen möchten, rufen Sie die URL /_ah/admin auf Ihrem Server auf: http://localhost:8080/_ah/admin.

Befehlszeilenargumente

Der Entwicklungsserver-Befehl unterstützt die folgenden Befehlszeilenargumente:

--address=...

Die Hostadresse für den Server. Möglicherweise müssen Sie diese festlegen, damit Sie von einem anderen Computer im Netzwerk aus auf den Entwicklungsserver zugreifen können. Eine Adresse wie 0.0.0.0 ermöglicht sowohl Localhost- als auch Hostname-Zugriff. Standardeinstellung: localhost

--default_gcs_bucket=...

Legt den Standardnamen des Google Cloud Storage-Buckets fest.

--disable_update_check

Wenn dies angegeben wird, überprüft der Entwicklungsserver nicht, ob auf App Engine eine neue Version des SDKs verfügbar ist. Standardmäßig überprüft der Server beim Start, ob eine neue Version vorhanden ist, und gibt ggf. eine entsprechende Nachricht zurück.

--generated_dir=...

Legt das Verzeichnis fest, in dem generierte Dateien erstellt werden.

--help

Zeigt eine hilfreiche Nachricht an und beendet sie wieder.

--jvm_flag=...

Übergibt das angegebene Flag als JVM-Argument. Kann wiederholt werden, um mehrere Flags anzugeben.

--port=...

Die Portnummer für den Server; Standardwert ist 8080.

--sdk_root=...

Ein Pfad zur gcloud CLI, falls dieser sich vom Speicherort des Tools unterscheidet.

--server=...

Der Server, der zum Bestimmen der neuesten SDK-Version verwendet wird.