Google Cloud CLI para Java incluye un servidor de desarrollo local que permite probar la aplicación en tu computadora. El servidor de desarrollo local simula el entorno de ejecución de Java de App Engine y todos sus servicios, incluido Datastore.
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 google-cloud-sdk/bin/
del SDK.
Sintaxis del comando para Windows:
google-cloud-sdk\bin\java_dev_appserver.cmd [options] [WAR_DIRECTORY_LOCATION]
Sintaxis del comando para Linux o macOS:
google-cloud-sdk/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 Cloud 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_cloud_sdk/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 Datastore local los IDs de entidades automáticos (ten en cuenta que esta información se aplica al entorno de ejecución de Java 11 y de Java 8)
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
Para conocer las opciones del comando del servidor de desarrollo local, consulta aquí.