Google Cloud CLI für Java enthält einen lokalen Entwicklungsserver zum Testen der Anwendung auf Ihrem Computer. Der lokale Entwicklungsserver emuliert die Java-Laufzeitumgebung von App Engine und alle zugehörigen Dienste, einschließlich Datastore.
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 google-cloud-sdk/bin/
des SDK.
Windows-Befehlssyntax:
google-cloud-sdk\bin\java_dev_appserver.cmd [options] [WAR_DIRECTORY_LOCATION]
Mac OS X- oder Linux-Befehlssyntax:
google-cloud-sdk/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:
- Starten Sie den Entwicklungsserver, wie zuvor beschrieben.
- Rufen Sie die Entwicklungskonsole auf.
- Klicken Sie im linken Navigationsbereich auf Datastore-Betrachter, um den Inhalt des lokalen Datenspeichers anzuzeigen.
Cloud 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_cloud_sdk/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 Datastore automatische Entitäts-IDs zuweist. Diese Informationen gelten sowohl für die Java 11- als auch für die Java 8-Laufzeit.
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
Informationen zu den Befehlsoptionen für den lokalen Entwicklungsserver finden Sie hier.