Usa el servidor de desarrollo local

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:

  1. 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.

  2. Extrae el contenido del directorio a tu sistema de archivos local, como el directorio /home. Puedes encontrar dev_appserver.py en el directorio google_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:

  1. Inicia el servidor de desarrollo como se describió previamente.
  2. Dirígete a Development Console.
  3. 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.