El servidor de desarrollo local simula el entorno de ejecución de Java de App Engine y todos sus servicios, incluido Datastore.
Antes de comenzar
Debido a que Java 8 alcanzó el fin de la asistencia, ya no puedes usar la última versión de dev_appserver.py
para ejecutar tus aplicaciones de forma local. Para descargar una versión archivada de devapp_server.py
, sigue estos pasos:
Desde el archivo, descarga la carpeta comprimida que contiene el servidor
dev_appserver.py
para los entornos de ejecución que alcanzaron el fin de la asistencia.Extrae el contenido del directorio a tu sistema de archivos local, como el directorio
/home
. Puedes encontrardev_appserver.py
en el directoriogoogle_appengine/google/appengine/tools/java/bin
.
Ejecuta el servidor web de desarrollo
Para obtener información sobre cómo configurar las propiedades del sistema y las variables del entorno de la aplicación, consulta Cómo se manejan las solicitudes.
También puedes ejecutar el servidor web de desarrollo desde el símbolo del sistema. El comando para ejecutar está en el directorio del SDK con la ruta de acceso relativa google_appengine/google/appengine/tools/java/bin
.
Sintaxis del comando para Windows:
google_appengine\google\appengine\tools\java\bin\java_dev_appserver.cmd [options] [WAR_DIRECTORY_LOCATION]
Sintaxis del comando para Linux o macOS:
google_appengine/google/appengine/tools/java/bin/java_dev_appserver.sh [options] [WAR_DIRECTORY_LOCATION]
El comando adopta como argumento la ubicación del directorio de WAR de tu aplicación.
Detén el servidor de desarrollo
Para detener el servidor web, presiona Ctrl-C.
Detecta el entorno de ejecución de la aplicación
Si deseas determinar si el código se ejecuta en producción o en el servidor de desarrollo local, puedes verificar el valor del método SystemProperty.environment.value()
. Por ejemplo:
if (SystemProperty.environment.value() == SystemProperty.Environment.Value.Production) {
// Production
} else {
// Local development server
// which is: SystemProperty.Environment.Value.Development
}
Usa el emulador del almacén de datos local
El servidor web de desarrollo simula un Datastore mediante un Datastore local respaldado por archivos en la computadora. Datastore se llama local_db.bin
y se crea en el directorio WAR de la aplicación, en el directorio WEB-INF /appengine-generated/
. No se sube con la aplicación.
Este almacén permanece entre cada invocación del servidor web, de modo que los datos que almacenes sigan estando disponibles la próxima vez que ejecutes ese servidor. Para borrar el contenido de Datastore, apaga el servidor y borra este archivo.
Como se describe en Configuración de índice del almacén de datos, el servidor de desarrollo puede generar la configuración de índices de Datastore que necesite tu aplicación, que se determina a partir de las consultas que realiza mientras ejecutas las pruebas. Esto genera un archivo llamado datastore-indexes-auto.xml
en el directorio WEB-INF/appengine-generated/
en el WAR. Para inhabilitar la configuración automática de índices, crea o edita el archivo datastore-indexes.xml
en el directorio WEB-INF/
mediante el atributo autoGenerate="false"
para el elemento <datastore-indexes>
.
Navega por el almacén de datos en el servidor de desarrollo
Para navegar por el almacén de datos local con el servidor web de desarrollo:
- Inicia el servidor de desarrollo como se describió previamente.
- Dirígete a Development Console.
- Haz clic en Lector de Datastore en el panel de navegación izquierdo para ver el contenido del almacén de datos local.
El modelo de coherencia de Datastore
De forma predeterminada, el Datastore local está configurado para que el 10% de escrituras de Datastore no se vean de inmediato en las consultas globales.
Para ajustar este nivel de coherencia, configura la propiedad del sistema datastore.default_high_rep_job_policy_unapplied_job_pct
con un valor que corresponda a la cantidad de coherencia eventual que deseas que vea la aplicación.
-Ddatastore.default_high_rep_job_policy_unapplied_job_pct=20
Si estableces esta propiedad con el símbolo del sistema java_dev_appserver.sh
, debes usar --jvm_flag=...
para configurar la propiedad:
google_appengine/google/appengine/tools/java/bin/java-dev_appserver.sh --jvm_flag=-Ddatastore.default_high_rep_job_policy_unapplied_job_pct=20
El rango válido de datastore.default_high_rep_job_policy_unapplied_job_pct
está entre 0 y 100. Se producirá un error si usas números fuera de este rango.
Especifica la política de asignación de ID automática
Puedes configurar cómo asigna el almacén de datos local los ID de entidades automáticos.
En el servidor de desarrollo, se admiten las siguientes políticas de asignación automática de ID:
sequential
- Los ID se asignan a partir de la secuencia de números enteros consecutivos.
scattered
- Los ID se asignan a partir de una secuencia no repetitiva de números enteros distribuidos de manera casi uniforme.
La política predeterminada en el Datastore local es scattered
.
Para especificar la política de ID automática, establece la propiedad del sistema datastore.auto_id_allocation_policy
en sequential
o scattered
.
-Ddatastore.auto_id_allocation_policy=scattered
Si quieres configurar esta propiedad del sistema mediante un marcador transmitido a la macro dev_appserver, usa lo siguiente:
java_dev_appserver --jvm_flag=-Ddatastore.auto_id_allocation_policy=scattered
Simula cuentas de usuario
El servidor web de desarrollo simula Cuentas de Google con sus propias páginas de inicio y cierre de sesión. Mientras se ejecuta en el servidor web de desarrollador, los métodos que generan las URL de inicio y de cierre de sesión muestran las URL de /_ah/login
y /_ah/logout
en el servidor local.
La página de inicio de sesión del servidor de desarrollo incluye un formulario en el que puedes escribir una dirección de correo electrónico. Esta dirección es el usuario activo de la sesión.
Para que la aplicación crea que el usuario que accedió es un administrador, marca la casilla de verificación "Acceder como administrador" en el formulario.
Usa la recuperación de URL
Cuando tu aplicación usa la API de Recuperación de URL para hacer una solicitud HTTP, el servidor web de desarrollo realiza la solicitud directamente desde tu computadora. El comportamiento puede diferir de la ejecución de tu aplicación en App Engine si usas un servidor proxy para acceder a sitios web.
Development Console
El servidor web de desarrollo incluye una aplicación web de consola que puedes usar para navegar por el Datastore local.
Para acceder a la consola, visita la URL /_ah/admin
en el servidor: http://localhost:8080/_ah/admin
Argumentos de la línea de comandos
El comando del servidor de desarrollo es compatible con estos tipos de argumentos de línea de comandos:
--address=...
-
La dirección del host que se utilizará para el servidor. Es posible que debas configurar este parámetro para poder acceder al servidor de desarrollo desde otra computadora de la red. Una dirección de
0.0.0.0
permite el acceso de localhost y el acceso de nombre de host. Predeterminado:localhost
. --default_gcs_bucket=...
-
Configura el nombre del bucket predeterminado de Google Cloud Storage.
--disable_update_check
-
Si lo haces, el servidor de desarrollo no se comunicará con App Engine para comprobar la disponibilidad de una versión nueva del SDK. De forma predeterminada, el servidor busca versiones nuevas cuando se inicia e imprime un mensaje si hay una versión disponible nueva.
--generated_dir=...
-
Configura el directorio donde se crean los archivos generados.
--help
-
Imprime un mensaje útil y se cierra.
--jvm_flag=...
-
Transmite el marcador específico como un argumento de JVM. Se puede repetir para suministrar varios marcadores.
--port=...
-
El número de puerto que se usará para el servidor. El valor predeterminado es
8080
. --sdk_root=...
-
Una ruta a la CLI de gcloud, si no es igual a la ubicación de la herramienta.
--server=...
-
El servidor utilizado para determinar la versión más reciente del SDK.